mapTheme <- function(base_size = 12) {
theme(
text = element_text( color = "black", size=12),
plot.title = element_text(size = 13,colour = "black"),
plot.subtitle=element_text(face="italic"),
plot.caption=element_text(hjust=0),
axis.ticks = element_blank(),
panel.background = element_blank(),axis.title = element_blank(),
axis.text = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_rect(colour = "black", fill=NA, size=2)
)
}
plotTheme <- function(base_size = 12) {
theme(
text = element_text( color = "black", size=12),
plot.title = element_text(size = 14,colour = "black"),
plot.subtitle = element_text(face="italic"),
plot.caption = element_text(hjust=0),
axis.ticks = element_blank(),
panel.background = element_blank(),
panel.grid.major = element_line("grey80", size = 0.1),
panel.grid.minor = element_blank(),
panel.border = element_rect(colour = "black", fill=NA, size=2),
strip.background = element_rect(fill = "lightskyblue1", color = "white"),
strip.text = element_text(size=12),
axis.title = element_text(size=12),
axis.text = element_text(size=10),
plot.background = element_blank(),
legend.background = element_blank(),
legend.title = element_text(colour = "black", face = "italic"),
legend.text = element_text(colour = "black", face = "italic"),
strip.text.x = element_text(size = 14)
)
}
palette5 <- c("#25CB10", "#5AB60C", "#8FA108", "#C48C04", "#FA7800")
This analysis aims to create a tool that can be used by city housing departments across the United States as a means of predicting and preventing potential residential displacement. We pilot this idea with the Philadelphia Division of Housing and Community Development in mind, in an effort to help the division allocate limited housing resources to vulnerable residents.
Our method uses issuance of new construction permits as an indicator of displacement risk. Neighborhoods with significant new construction often experience higher levels of displacement, which we define as the movement of longtime residents due to uneven distribution of home value increases. New construction and renovation increases home values, but also raises property taxes on nearby older homes, whose owners do not benefit from the physical improvements themselves. This increase in cost of living can act to drive lower income residents out of the neighborhood in search of more affordable areas, which are likely further away from amenities such as public transportation, schools, and green spaces.
This Displacement Tracker Tool works to prevent displacement in three key ways:
1 By anticipating neighborhoods where home values may increase and threaten the ability of existing residents to remain;
2 By identifying trusted community partners in each area of the city to communicate effectively with local residents based on established trust; and
3 By estimating the benefit various policy levers, such as flip taxes or home renovation subsidies, can have on the long-time residents of each neighborhood.
Because homeowners are often rightly skeptical of communications regarding their property and its value, we strive to ensure that this information comes from an already proven and trusted source. This data-driven and community facilitated approach to displacement prevention is a new method for addressing the issue that many other cities and regions would benefit from implementing. We hope that this open-data analysis will serve as a basis for cities looking to rethink their response to displacement.
Underlying our Displacement Tracker Tool is a model that uses a variety of data to predict the count of residential building permits across the city. The Tool also incorporates data on potential outreach partners, who are trusted organizations within communities. Most data area gathered from OpenDataPhilly, the City of Philadelphia’s catalog of available data in the Philadelphia region. We also use data from the U.S. Census Bureau’s 2018 5-year American Community Survey to understand information about the population such as education level and median income. The sections below describe our process for gathering and cleaning various datasets.
To begin, we gather Philadelphia new construction permit data from 2015 through 2019 from the Licenses and Inspections Building and Zoning Permit Dataset. These data from the Department of Licenses & Inspections provide the date, location, and a variety of ancillary information about building permits in the city. Building permits are required before the start of a specific construction activity to enlarge, repair, change, add or, or demolish a structure, and to install equipment or systems in a structure. From this dataset, we’ve selected only new construction permits, as we believe that new construction is a strong primary indicator of displacement risk for longtime residents. Areas with large amounts of new construction permits may indicate an early warning sign for neighborhood changes that can increase the risk of longtime resident displacement. As renovation and construction occurs on a high density of residential properties, neighborhoods can become more expensive, experience higher real estate taxes that may burden lower income residents, and/or experience cultural shifts that may make longtime residents feel they no longer belong.1.
Importantly, we also gather data on locations and contact information for Philadelphia Registered Community Organizations (RCOs), which are community groups that are concerned with the physical development of their community. RCOs get advance notice of projects that will be reviewed by the Zoning Board of Adjustment or the Civic Design Review Committee; organize and conduct public meetings where community members can comment on planned developments in their neighborhood; and get notifications from the Philadelphia City Planning Commission whenever a zoning variance or special exception is requested or when development requiring Civic Design Review is proposed. We use this RCO data to identify potential trusted community partners within each neighborhood that may be able to communicate effectively with local residents based on established trust.
#residential building permit
permits <-
st_read("https://phl.carto.com/api/v2/sql?q=SELECT+*+FROM+permits+WHERE+permitissuedate+>=+'2015-01-01'+AND+permitissuedate+<+'2019-12-31'AND+permitdescription+=+'NEW+CONSTRUCTION+PERMIT'&filename=permits&format=geojson&skipfields=cartodb_id") %>%
st_transform('ESRI:102729')
## Reading layer `OGRGeoJSON' from data source `https://phl.carto.com/api/v2/sql?q=SELECT+*+FROM+permits+WHERE+permitissuedate+>=+'2015-01-01'+AND+permitissuedate+<+'2019-12-31'AND+permitdescription+=+'NEW+CONSTRUCTION+PERMIT'&filename=permits&format=geojson&skipfields=cartodb_id' using driver `GeoJSON'
## replacing null geometries with empty geometries
## Simple feature collection with 9062 features and 30 fields (with 2 geometries empty)
## geometry type: POINT
## dimension: XY
## bbox: xmin: -75.25937 ymin: 39.88034 xmax: -74.96128 ymax: 40.13514
## geographic CRS: WGS 84
# ggplot() +
# geom_sf(data = permits)
#mapview(permits)
boundary<-
st_read("http://data.phl.opendata.arcgis.com/datasets/405ec3da942d4e20869d4e1449a2be48_0.geojson") %>%
st_transform('ESRI:102729') %>%
st_union()
## Reading layer `f6ac8dd0-e0ae-42cf-a587-c9b3a912cc502020329-1-1pq5eo1.ai8h' from data source `http://data.phl.opendata.arcgis.com/datasets/405ec3da942d4e20869d4e1449a2be48_0.geojson' using driver `GeoJSON'
## Simple feature collection with 1 feature and 3 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -75.28031 ymin: 39.86747 xmax: -74.95575 ymax: 40.13793
## geographic CRS: WGS 84
# ggplot() +
# geom_sf(data = boundary)
rcos <-
st_read("http://data.phl.opendata.arcgis.com/datasets/efbff0359c3e43f190e8c35ce9fa71d6_0.geojson") %>%
st_transform('ESRI:102729')
## Reading layer `Zoning_RCO' from data source `http://data.phl.opendata.arcgis.com/datasets/efbff0359c3e43f190e8c35ce9fa71d6_0.geojson' using driver `GeoJSON'
## Simple feature collection with 281 features and 21 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -75.28031 ymin: 39.86747 xmax: -74.95574 ymax: 40.13793
## geographic CRS: WGS 84
Next, we create a geospatial dataset to help us understand the smooth variation of displacement risk across the city. This key element of our analysis is the “fishnet,” a continuous grid pattern overlay in which every polygon is connected on all sides to the other polygon neighbors. This analysis uses a fishnet with 500x500 foot grid cells. We use a fishnet to treat displacement risk (presence of new construction permits) as a phenomenon that varies continuously across space. We will use the fishnet to aggregate point-level data.
The figure below shows the count of new construction permits across the fishnet. Grid cells shown in yellow have the largest number of permits. These locations are primarily concentrated in the Center City and North East Philadelphia areas.
# create the fishnet
# uses grid.arrange to organize independent plots
grid.arrange(ncol=2,
ggplot() +
geom_sf(data = boundary) +
geom_sf(data = permits, colour="red", size=0.1, show.legend = "point") +
labs(title= "Permits, Phil - 2010-2020")+
mapTheme(),
ggplot() +
geom_sf(data = boundary, fill = "grey40") +
stat_density2d(data = data.frame(st_coordinates(permits)),
aes(X, Y, fill = ..level.., alpha = ..level..),
size = 0.01, bins = 40, geom = 'polygon') +
scale_fill_viridis() +
scale_alpha(range = c(0.00, 0.35), guide = FALSE) +
labs(title = "Density of Permits") +
theme(legend.position = "none")+
mapTheme())
#Fishnet code
fishnet <-
st_make_grid(boundary,
cellsize = 500,
square = TRUE) %>%
.[boundary] %>%
st_sf() %>%
mutate(uniqueID = rownames(.))
permit_net <-
dplyr::select(permits) %>% #an SF point object
mutate(countpermits = 1) %>% #giving value of one to each point
aggregate(., fishnet, sum) %>% #aggregate points. period represents burglaries. sum number of "1" points that fall within each grid cell. aggregate is a type of spatial join. normally would do a join and them summarize, but this does both in one step.
mutate(countpermits = replace_na(countpermits, 0), #where there weren't any crimes
uniqueID = rownames(.),#make into a column
cvID = sample(round(nrow(fishnet) / 24),
size=nrow(fishnet), replace = TRUE)) #adding a random number to each grid cell for cross validation later
ggplot() +
geom_sf(data = permit_net, aes(fill = countpermits), color = NA) +
scale_fill_viridis() +
labs(title = "Count of Permits for the fishnet") +
mapTheme()
Next we gather data on the boundaries of Philadelphia’s neighborhoods. We will use neighborhood’s as a unit of analysis for both cross-validation of the predictive model and to understand locations of greatest risk.
#nhood <- st_read("/Users/ashabazil/Documents/GitHub/geo-data/Neighborhoods_Philadelphia/Neighborhoods_Philadelphia.geojson") %>%
#st_transform(st_crs(fishnet))
#Should work for both of us using this link
nhood<- st_read("https://raw.githubusercontent.com/azavea/geo-data/2e0c6a9f42d862e39dcee292b851000c973e6de2/Neighborhoods_Philadelphia/Neighborhoods_Philadelphia.geojson") %>%
st_transform(st_crs(fishnet))
## Reading layer `Neighborhoods_Philadelphia' from data source `https://raw.githubusercontent.com/azavea/geo-data/2e0c6a9f42d862e39dcee292b851000c973e6de2/Neighborhoods_Philadelphia/Neighborhoods_Philadelphia.geojson' using driver `GeoJSON'
## Simple feature collection with 158 features and 8 fields
## geometry type: MULTIPOLYGON
## dimension: XY
## bbox: xmin: -75.28027 ymin: 39.867 xmax: -74.95576 ymax: 40.13799
## geographic CRS: WGS 84
#ggplot()+
#geom_sf(data=nhood)+
#mapTheme()
To further help us understand neighborhood changes that may lead to displacement risk, we gather data from the Department of Records on Real Estate Transfers. The real estate transfers data shows the dates and location of property sales, deeds, mortgages, and sheriff deeds, and includes associated data, such as any realty transfer tax paid. We gathered data for 2017 and 2018, and calculated the percent change in home value in order to categorize each observation as “No Change”, “Increase in Home Value”, “Decrease in Home Value”, or “No Answer.” Because we are focused on changes in home value (and resulting increases in property taxes) as a primary mechanism for driving displacement, we wish to understand the patterns of changes in home values across the city.
In the figure below, we see locations with the greatest density of changes in home value. These locations are concentrated in the Center City area.
#real estate transfer data
#this takes a while
rt <-
st_read("https://phl.carto.com/api/v2/sql?q=SELECT+*+FROM+RTT_SUMMARY+WHERE+display_date+>='2017-01-01'+AND+display_date+<=+'2018-12-31'AND+opa_account_num+!=+'NA'&format=geojson&skipfields=cartodb_id") %>%
st_transform('ESRI:102729')
## Reading layer `OGRGeoJSON' from data source `https://phl.carto.com/api/v2/sql?q=SELECT+*+FROM+RTT_SUMMARY+WHERE+display_date+>='2017-01-01'+AND+display_date+<=+'2018-12-31'AND+opa_account_num+!=+'NA'&format=geojson&skipfields=cartodb_id' using driver `GeoJSON'
## Simple feature collection with 315757 features and 46 fields
## geometry type: POINT
## dimension: XY
## bbox: xmin: -75.27436 ymin: 39.88034 xmax: -74.96048 ymax: 40.1377
## geographic CRS: WGS 84
#filter for obs with values
rtt <- rt %>%
mutate(adjusted_fair_market_value = replace_na(adjusted_fair_market_value, 0), year = substr(display_date,1,4)) %>%
filter(!(adjusted_fair_market_value == 0)) %>%
dplyr::select(adjusted_fair_market_value, opa_account_num, year)
#split by year
rtt_17 <- rtt %>%
filter(year == 2017) %>%
rename(value_17 = adjusted_fair_market_value) %>%
filter(value_17<=9878103)
rtt_18 <- rtt %>%
filter(year == 2018) %>%
rename(value_18 = adjusted_fair_market_value)
#create difference percent, difference value, and categorical variable
joined<-
st_join(rtt_17, rtt_18, by = opa_account_num) %>%
mutate(difference = value_18-value_17,
dif_cat= case_when(difference == 0 ~ "No Change",
difference > 0 ~ "Increase in Home Value",
difference < 0 ~ "Decrease in Home Value",
# anything that isn't in the above groups (i.e. NA which is No Answer) gets to be No Answer
TRUE ~ "No Answer"),
dif_cat = factor(dif_cat, levels = c("Decrease in Home Value", "Increase in Home Value", "No Change", "No Answer")),
dif_pct= (difference/value_17)*100) %>%
filter(!(difference == is.na(.)))
#split by increase and decreased
decreasedHV <-
joined %>%
filter(dif_cat == "Decrease in Home Value", dif_pct <= -3) %>%
mutate(dif_pct= abs(dif_pct))
increasedHV <-
joined %>%
filter(dif_cat == "Increase in Home Value")
ggplot() +
geom_sf(data = boundary, fill = "grey40") +
stat_density2d(data = data.frame(st_coordinates(joined)),
aes(X, Y, fill = ..level.., alpha = ..level..),
size = 0.02, bins = 50, geom = 'polygon') +
scale_fill_viridis() +
scale_alpha(range = c(0.00, 0.50), guide = FALSE) +
labs(title = "Home Value Difference") +
theme(legend.position = "none")+
mapTheme()
The figures below depict the increases and decreases in home value between 2017 and 2018 by percentage difference. Locations with greatest increases are generally clustered in the Center City area and locations directly to the north. Locations with greatest decrease are more widely scattered across the city.
# plot magnitude of percentage increases and decreases
#flip color scale for decrease, filter out small decrease differences
grid.arrange(ncol=2,
ggplot()+
geom_sf(data = nhood, fill = "grey40") +
geom_sf(data=increasedHV, aes(color=q5(dif_pct)),
show.legend="point", size=1)+
scale_color_viridis(discrete = TRUE,
labels=qBr(increasedHV, "dif_pct"),
name="Quintile\nBreaks")+
labs(title="Home Value increases\nbetween 2017 and 2018\nby Percentage Difference")+
mapTheme(),
ggplot()+
geom_sf(data = nhood, fill = "grey40") +
geom_sf(data=decreasedHV, aes(color=q5(dif_pct)),
show.legend="point", size=1)+
scale_color_viridis(discrete = TRUE,
labels=qBr(decreasedHV, "dif_pct"),
name="Quintile\nBreaks")+
labs(title="Abs Val of Home Value decreases\nbetween 2017 and 2018\nby Percentage Difference")+
mapTheme())
To further understand changes in home value, the figures below show the distribution of home values across the city in 2018 and 2018. The pattern remains largely the same across the city.
#plot of just property values
rtt_plot<-
rtt%>%
filter(year==2018| year == 2017) %>%
mutate(
val_cat= case_when(adjusted_fair_market_value >=0 & adjusted_fair_market_value <= 50000 ~ "Less Than $50,000",
adjusted_fair_market_value > 50000 & adjusted_fair_market_value<= 500000 ~ "Between $50,000 and $500,000",
adjusted_fair_market_value > 500000 & adjusted_fair_market_value<= 1000000 ~ "Between $500,000 and $1,000,000",
adjusted_fair_market_value > 1000000 & adjusted_fair_market_value<= 2000000 ~ "Between $1 mil and $2 mil",
adjusted_fair_market_value > 2000000 & adjusted_fair_market_value<= 3000000 ~ "Between $2mil and $3 mil",
adjusted_fair_market_value > 3000000 ~ "Greater Than 3 mil",
TRUE ~ "No Answer"),
val_cat = factor(val_cat, levels = c("Less Than $50,000", "Between $50,000 and $500,000", "Between $500,000 and $1,000,000", "Between $1 mil and $2 mil", "Between $2mil and $3 mil","Greater Than 3 mil","No Answer")))
ggplot()+
geom_sf(data = nhood, fill = "grey40") +
geom_sf(data=rtt_plot, aes(color=val_cat),
show.legend="point", size=1)+
scale_color_viridis(discrete = TRUE,
#labels=qBr(rtt_plot, "adjusted_fair_market_value"),
name="Property Value")+
facet_wrap(~year)+
labs(title="Property Values")+
mapTheme()
The figures below show the density of locations where home values increased and decreased between 2017 and 2018. Both of these locations are concentrated in the Center City area, with a greater intensity of home value increases in that location.
#denisty of homevalues in 2017 and 2018
#does this show density of greatest home values? or density of where there are home values? We have a lot of plots here so not sure if we need these - let me know what you think!
# rt_10 <-
# st_read("https://phl.carto.com/api/v2/sql?q=SELECT+*+FROM+RTT_SUMMARY+WHERE+display_date+>='2010-01-01'+AND+display_date+<=+'2010-12-31'AND+opa_account_num+!=+'NA'&format=geojson&skipfields=cartodb_id") %>%
# st_transform('ESRI:102729')
#
# #filter for obs with values
# rtt_10 <- rt_10 %>%
# mutate(adjusted_fair_market_value = replace_na(adjusted_fair_market_value, 0), year = substr(display_date,1,4)) %>%
# filter(!(adjusted_fair_market_value == 0)) %>%
# dplyr::select(adjusted_fair_market_value, opa_account_num, year)
# grid.arrange(ncol=2,
# ggplot(rtt_10) +
# geom_sf(data = nhood, fill = "grey40") +
# stat_density2d(data = data.frame(st_coordinates(adjusted_fair_market_value)),
# aes(X, Y, fill = ..level.., alpha = ..level..),
# size = 0.02, bins = 50, geom = 'polygon') +
# scale_fill_viridis() +
# scale_alpha(range = c(0.00, 0.50), guide = FALSE) +
# labs(title = "2010") +
# theme(legend.position = "none")+
# mapTheme(),
#
# ggplot(rtt_18) +
# geom_sf(data = nhood, fill = "grey40") +
# stat_density2d(data = data.frame(st_coordinates(value_18)),
# aes(X, Y, fill = ..level.., alpha = ..level..),
# size = 0.01, bins = 40, geom = 'polygon') +
# scale_fill_viridis() +
# scale_alpha(range = c(0.00, 0.35), guide = FALSE) +
# labs(title = "2018") +
# theme(legend.position = "none")+
# mapTheme())
#density of change in homevalues based on increasing and decreasing
grid.arrange(ncol=2,
ggplot() +
geom_sf(data = nhood, fill = "grey40") +
stat_density2d(data = data.frame(st_coordinates(increasedHV)),
aes(X, Y, fill = ..level.., alpha = ..level..),
size = 0.02, bins = 50, geom = 'polygon') +
scale_fill_viridis() +
scale_alpha(range = c(0.00, 0.50), guide = FALSE) +
labs(title = "Locations where Home Values Increased, 2017-2018") +
theme(legend.position = "none")+
mapTheme(),
ggplot() +
geom_sf(data = nhood, fill = "grey40") +
stat_density2d(data = data.frame(st_coordinates(decreasedHV)),
aes(X, Y, fill = ..level.., alpha = ..level..),
size = 0.01, bins = 40, geom = 'polygon') +
scale_fill_viridis() +
scale_alpha(range = c(0.00, 0.35), guide = FALSE) +
labs(title = "Locations where Home Values Decreased, 2017-2018") +
theme(legend.position = "none")+
mapTheme())
We also gathered data on 311 Service and Information Requests to included in our predictive model. These data represents all service and information requests submitted to the Philly311 via the 311 mobile application, calls, walk-ins, emails, the 311 website, or social media. From the 311 data, we gathered data from 2015 to 2019 on locations of Sanitation & Dumpster Violations, locations of Dangerous Building Reports, and locations of Vacant Lot Reports. We use these data as variables in the model to help predict locations of residential building permits.
The figures below show the density of locations of these reports and violations, which are distributed across the city.
#https://cityofphiladelphia.github.io/carto-api-explorer/#public_cases_fc
# Sanitation Data
sanitation<-
st_read("https://phl.carto.com/api/v2/sql?q=SELECT+*+FROM+public_cases_fc+WHERE+service_name+=+'Sanitation+/+Dumpster+Violation'OR+service_name+=+'Illegal+Dumping'+AND+requested_datetime+>=+'2015-01-01'+AND+requested_datetime+<+'2019-12-31'&filename=sanitation&format=geojson&skipfields=cartodb_id") %>%
mutate(year = substr(requested_datetime,1,4)) %>%
#filter(year %in% c("2020")) %>%
dplyr::select(Y = lat, X = lon) %>%
na.omit() %>%
st_as_sf(coords = c("X", "Y"), crs = 4326, agr = "constant") %>%
st_transform(st_crs(fishnet)) %>%
mutate(Legend = "Sanitation")
## Reading layer `OGRGeoJSON' from data source `https://phl.carto.com/api/v2/sql?q=SELECT+*+FROM+public_cases_fc+WHERE+service_name+=+'Sanitation+/+Dumpster+Violation'OR+service_name+=+'Illegal+Dumping'+AND+requested_datetime+>=+'2015-01-01'+AND+requested_datetime+<+'2019-12-31'&filename=sanitation&format=geojson&skipfields=cartodb_id' using driver `GeoJSON'
## replacing null geometries with empty geometries
## Simple feature collection with 133591 features and 16 fields (with 141 geometries empty)
## geometry type: POINT
## dimension: XY
## bbox: xmin: -75.27571 ymin: 39.87502 xmax: -74.95933 ymax: 40.13528
## geographic CRS: WGS 84
# Service Data
service<-
st_read("https://phl.carto.com/api/v2/sql?q=SELECT+*+FROM+public_cases_fc+WHERE+service_name+=+'Building+Dangerous'+AND+requested_datetime+>=+'2015-01-01'+AND+requested_datetime+<+'2019-12-31'&filename=service&format=geojson&skipfields=cartodb_id") %>%
mutate(year = substr(requested_datetime,1,4)) %>%
dplyr::select(Y = lat, X = lon) %>%
na.omit() %>%
st_as_sf(coords = c("X", "Y"), crs = 4326, agr = "constant") %>%
st_transform(st_crs(fishnet)) %>%
mutate(Legend = "Service")
## Reading layer `OGRGeoJSON' from data source `https://phl.carto.com/api/v2/sql?q=SELECT+*+FROM+public_cases_fc+WHERE+service_name+=+'Building+Dangerous'+AND+requested_datetime+>=+'2015-01-01'+AND+requested_datetime+<+'2019-12-31'&filename=service&format=geojson&skipfields=cartodb_id' using driver `GeoJSON'
## replacing null geometries with empty geometries
## Simple feature collection with 13754 features and 16 fields (with 2 geometries empty)
## geometry type: POINT
## dimension: XY
## bbox: xmin: -75.27112 ymin: 39.89559 xmax: -74.96588 ymax: 40.13355
## geographic CRS: WGS 84
# Vacant Lot Data
vacant<-
st_read("https://phl.carto.com/api/v2/sql?q=SELECT+*+FROM+public_cases_fc+WHERE+service_name+=+'Vacant+House+or+Commercial'+AND+requested_datetime+>=+'2015-01-01'+AND+requested_datetime+<+'2019-12-31'&filename=vacant&format=geojson&skipfields=cartodb_id") %>%
mutate(year = substr(requested_datetime,1,4)) %>%
dplyr::select(Y = lat, X = lon) %>%
na.omit() %>%
st_as_sf(coords = c("X", "Y"), crs = 4326, agr = "constant") %>%
st_transform(st_crs(fishnet)) %>%
mutate(Legend = "Vacant")
## Reading layer `OGRGeoJSON' from data source `https://phl.carto.com/api/v2/sql?q=SELECT+*+FROM+public_cases_fc+WHERE+service_name+=+'Vacant+House+or+Commercial'+AND+requested_datetime+>=+'2015-01-01'+AND+requested_datetime+<+'2019-12-31'&filename=vacant&format=geojson&skipfields=cartodb_id' using driver `GeoJSON'
## replacing null geometries with empty geometries
## Simple feature collection with 31810 features and 16 fields (with 16 geometries empty)
## geometry type: POINT
## dimension: XY
## bbox: xmin: -75.27292 ymin: 39.89314 xmax: -74.96259 ymax: 40.13561
## geographic CRS: WGS 84
grid.arrange(ncol = 3,
ggplot() + geom_sf(data = boundary, fill = "grey40") +
stat_density2d(data = data.frame(st_coordinates(sanitation)),
aes(X, Y, fill = ..level.., alpha = ..level..),
size = 0.01, bins = 40, geom = 'polygon') +
scale_fill_gradient(low = "#25CB10", high = "#FA7800", name = "Density") +
scale_alpha(range = c(0.00, 0.35), guide = FALSE) +
labs(title = "Density of Sanitation Violations") +
mapTheme()+
theme(legend.position = "none"),
ggplot() + geom_sf(data = boundary, fill = "grey40") +
stat_density2d(data = data.frame(st_coordinates(service)),
aes(X, Y, fill = ..level.., alpha = ..level..),
size = 0.01, bins = 40, geom = 'polygon') +
scale_fill_gradient(low = "#25CB10", high = "#FA7800", name = "Density") +
scale_alpha(range = c(0.00, 0.35), guide = FALSE) +
labs(title = "Density of Dangerous Building Reports") +
mapTheme()+
theme(legend.position = "none"),
ggplot() + geom_sf(data = boundary, fill = "grey40") +
stat_density2d(data = data.frame(st_coordinates(vacant)),
aes(X, Y, fill = ..level.., alpha = ..level..),
size = 0.01, bins = 40, geom = 'polygon') +
scale_fill_gradient(low = "#25CB10", high = "#FA7800", name = "Density") +
scale_alpha(range = c(0.00, 0.35), guide = FALSE) +
labs(title = "Density of Vacant Lots") +
mapTheme()+
theme(legend.position = "none"))
Finally, we gathered data from the U.S. Census Bureau 2018 5-year American Community Survey (ACS) at the census tract level on median household income, education level, and moving dates. We used these data to calculate the following variables for inclusion in the predictive model: Percent of Voting Age Population with the following Education levels: +No High School Degree +High School Degree +Some College Education +Associate’s Degree +Bachelor’s Degree +Graduate or Professional Degree Percent of Residents in Owner-Occupied Housing Percent of Residents in Renter-Occupied Housing Percent of Residents who Moved into Owner-Occupied Housing: +Before 2010 +2010 to 2014 +2015 to 2018 *Percent of Residents who Moved into Renter-Occupied Housing: +Before 2010 +2010 to 2014 +2015 to 2018
As described in further detail below, we used a selection of these variables within our predictive model as indicators of residential building permit locations.
census_api_key("337be6633f769979b1dfc56e5071279d780c2090", overwrite = TRUE)
dd18_5 <- load_variables(year = 2018, dataset = "acs5", cache = TRUE)
variables=c(Median_HHInc="B19013_001",
VotingAgePop="B29002_001", #CITIZEN, VOTING-AGE POPULATION BY EDUCATIONAL ATTAINMENT: TOTAL
HS_LessThan9Grade="B29002_002", #CITIZEN, VOTING-AGE POPULATION BY EDUCATIONAL ATTAINMENT: Less than 9th grade
HS_9to12Grade="B29002_003", #CITIZEN, VOTING-AGE POPULATION BY EDUCATIONAL ATTAINMENT: 9th to 12th grade, no diploma
HS="B29002_004", #CITIZEN, VOTING-AGE POPULATION BY EDUCATIONAL ATTAINMENT: High school graduate (includes equivalency)
SomeCollege="B29002_005", #CITIZEN, VOTING-AGE POPULATION BY EDUCATIONAL ATTAINMENT: Some college, no degree
Associate="B29002_006", #CITIZEN, VOTING-AGE POPULATION BY EDUCATIONAL ATTAINMENT: Associate's degree
Bach="B29002_007", #CITIZEN, VOTING-AGE POPULATION BY EDUCATIONAL ATTAINMENT: Bachelor's degree
GradProf="B29002_008", #CITIZEN, VOTING-AGE POPULATION BY EDUCATIONAL ATTAINMENT: Graduate or professional degree
Pop_occHousing="B25026_001", #Total population in occupied housing units
Pop_OwnOcc="B25026_002", #Total population in occupied housing units!!Owner occupied
Pop_Own2017later="B25026_003", #Total population in occupied housing units!!Owner occupied!!Moved in 2017 or later
Pop_Own2015to2016="B25026_004", #Total population in occupied housing units!!Owner occupied!!Moved in 2015 to 2016
Pop_Own2010to2014="B25026_005", #Total population in occupied housing units!!Owner occupied!!Moved in 2010 to 2014
Pop_Own2000to2009="B25026_006", #Total population in occupied housing units!!Owner occupied!!Moved in 2000 to 2009
Pop_Own1990to1999="B25026_007", #Total population in occupied housing units!!Owner occupied!!Moved in 1990 to 1999
Pop_Own1989earlier="B25026_008", #Total population in occupied housing units!!Owner occupied!!Moved in 1989 or earlier
Pop_RentOcc="B25026_009", #Total population in occupied housing units!!Renter occupied
Pop_Rent2017later="B25026_010", #Total population in occupied housing units!!Renter occupied!!Moved in 2017 or later
Pop_Rent2015to2016="B25026_011", #Total population in occupied housing units!!Renter occupied!!Moved in 2015 to 2016
Pop_Rent2010to2014="B25026_012", #Total population in occupied housing units!!Renter occupied!!Moved in 2010 to 2014
Pop_Rent2000to2009="B25026_013", #Total population in occupied housing units!!Renter occupied!!Moved in 2000 to 2009
Pop_Rent1990to1999="B25026_014", #Total population in occupied housing units!!Renter occupied!!Moved in 1990 to 1999
Pop_Rent1989earlier="B25026_015") #Total population in occupied housing units!!Renter occupied!!Moved in 1989 or earlier
ACS_2018 <- get_acs(geography = "tract",
state = 42,
county= 101,
variables = variables,
year = 2018,
geometry=T)%>%
st_transform('ESRI:102729') %>%
dplyr::select(variable, estimate, GEOID) %>%
spread(variable, estimate) %>%
mutate(percent_NoHS= ifelse(VotingAgePop>0,((HS_LessThan9Grade+HS_9to12Grade) / VotingAgePop),0),
percent_HS= ifelse(VotingAgePop>0, HS/ VotingAgePop,0),
percent_SomeCollege= ifelse(VotingAgePop>0,SomeCollege / VotingAgePop,0),
percent_assoc = ifelse(VotingAgePop>0,Associate / VotingAgePop,0),
percent_bach = ifelse(VotingAgePop>0,Bach / VotingAgePop,0),
percent_GradProf = ifelse(VotingAgePop>0,GradProf / VotingAgePop,0),
percent_ownOcc= ifelse(Pop_occHousing>0,Pop_OwnOcc / Pop_occHousing,0),
percent_rentOcc = ifelse(Pop_occHousing>0,Pop_RentOcc / Pop_occHousing,0),
percent_Own_Pre2010 = ifelse(Pop_occHousing>0,
((Pop_Own1989earlier + Pop_Own1990to1999 + Pop_Own2000to2009) / Pop_occHousing),0),
percent_Own_2010to2014 = ifelse(Pop_occHousing>0,Pop_Own2010to2014 / Pop_occHousing,0),
percent_Own_2015to2018 = ifelse(Pop_occHousing>0,((Pop_Own2015to2016 + Pop_Own2017later) / Pop_occHousing),0),
percent_Rent_Pre2010 = ifelse(Pop_occHousing>0,
((Pop_Rent1989earlier + Pop_Rent1990to1999 + Pop_Rent2000to2009) / Pop_occHousing),0),
percent_Rent_2010to2014 = ifelse(Pop_occHousing>0,Pop_Rent2010to2014 / Pop_occHousing,0),
percent_Rent_2015to2018 = ifelse(Pop_occHousing>0,
((Pop_Rent2015to2016 + Pop_Rent2017later) / Pop_occHousing),0))%>%
dplyr::select(Median_HHInc, percent_NoHS, percent_HS, percent_SomeCollege, percent_assoc, percent_bach, percent_GradProf,
percent_ownOcc, percent_rentOcc, percent_Own_Pre2010, percent_Own_2010to2014, percent_Own_2015to2018,
percent_Rent_Pre2010, percent_Rent_2010to2014, percent_Rent_2015to2018)%>%
mutate(Median_HHInc = replace_na(Median_HHInc, 0),
percent_NoHS = replace_na(percent_NoHS,0),
percent_HS= replace_na(percent_HS,0),
percent_SomeCollege= replace_na(percent_SomeCollege,0),
percent_assoc= replace_na(percent_assoc,0),
percent_bach= replace_na(percent_bach,0),
percent_GradProf= replace_na(percent_GradProf,0),
percent_ownOcc= replace_na(percent_ownOcc,0),
percent_rentOcc= replace_na(percent_rentOcc,0),
percent_Own_Pre2010= replace_na(percent_Own_Pre2010,0),
percent_Own_2010to2014= replace_na(percent_Own_2010to2014,0),
percent_Own_2015to2018= replace_na(percent_Own_2015to2018,0),
percent_Rent_Pre2010= replace_na(percent_Rent_Pre2010,0),
percent_Rent_2010to2014= replace_na(percent_Rent_2010to2014,0),
percent_Rent_2015to2018= replace_na(percent_Rent_2015to2018,0))
##
|
| | 0%
|
|= | 1%
|
|= | 2%
|
|== | 2%
|
|== | 3%
|
|=== | 4%
|
|==== | 5%
|
|==== | 6%
|
|===== | 7%
|
|====== | 8%
|
|======= | 10%
|
|======= | 11%
|
|======== | 11%
|
|========= | 12%
|
|========= | 13%
|
|========== | 14%
|
|========== | 15%
|
|=========== | 15%
|
|============ | 17%
|
|============= | 18%
|
|============= | 19%
|
|============== | 20%
|
|=============== | 21%
|
|================ | 22%
|
|================ | 23%
|
|================= | 24%
|
|================== | 25%
|
|================== | 26%
|
|=================== | 27%
|
|=================== | 28%
|
|==================== | 28%
|
|===================== | 29%
|
|===================== | 30%
|
|====================== | 31%
|
|====================== | 32%
|
|======================= | 33%
|
|======================== | 34%
|
|========================= | 35%
|
|========================= | 36%
|
|========================== | 37%
|
|=========================== | 38%
|
|============================ | 39%
|
|============================ | 41%
|
|============================= | 41%
|
|============================== | 42%
|
|============================== | 43%
|
|=============================== | 44%
|
|=============================== | 45%
|
|================================ | 45%
|
|================================= | 46%
|
|================================= | 47%
|
|================================== | 48%
|
|================================== | 49%
|
|=================================== | 50%
|
|==================================== | 51%
|
|===================================== | 52%
|
|===================================== | 53%
|
|====================================== | 54%
|
|====================================== | 55%
|
|======================================= | 56%
|
|======================================== | 57%
|
|======================================== | 58%
|
|========================================= | 58%
|
|========================================= | 59%
|
|========================================== | 60%
|
|=========================================== | 61%
|
|=========================================== | 62%
|
|============================================ | 62%
|
|============================================ | 64%
|
|============================================= | 64%
|
|============================================== | 65%
|
|============================================== | 66%
|
|=============================================== | 67%
|
|=============================================== | 68%
|
|================================================ | 68%
|
|================================================= | 69%
|
|================================================= | 70%
|
|================================================== | 71%
|
|================================================== | 72%
|
|=================================================== | 73%
|
|==================================================== | 74%
|
|==================================================== | 75%
|
|===================================================== | 75%
|
|===================================================== | 76%
|
|====================================================== | 77%
|
|======================================================= | 78%
|
|======================================================= | 79%
|
|======================================================== | 80%
|
|======================================================== | 81%
|
|========================================================= | 81%
|
|========================================================== | 82%
|
|========================================================== | 83%
|
|=========================================================== | 84%
|
|=========================================================== | 85%
|
|============================================================ | 85%
|
|============================================================= | 87%
|
|============================================================= | 88%
|
|============================================================== | 88%
|
|============================================================== | 89%
|
|=============================================================== | 90%
|
|================================================================ | 91%
|
|================================================================ | 92%
|
|================================================================= | 92%
|
|================================================================= | 93%
|
|================================================================== | 94%
|
|=================================================================== | 95%
|
|=================================================================== | 96%
|
|==================================================================== | 97%
|
|==================================================================== | 98%
|
|===================================================================== | 98%
|
|======================================================================| 99%
|
|======================================================================| 100%
The figures below show the distribution of residents in owner-occupied housing who moved in before 2010 (left), and between 2015 and 2018 (right). From these maps we can see that some locations have a greater percentage of new homeowners (yellow areas on the map at right), including the Point Breeze and Northern Liberties Neighborhoods.
ACS_2018_plot<-
ACS_2018%>%
mutate(percent_Own_Pre2010_per=percent_Own_Pre2010*100)%>%
mutate(percent_Own_2015to2018_per=percent_Own_2015to2018*100)%>%
mutate(percent_Rent_2015to2018_per=percent_Rent_2015to2018*100)
grid.arrange(ncol=2,
ggplot()+
geom_sf(data=ACS_2018_plot, aes(fill=q5(percent_Own_Pre2010_per)))+
scale_fill_viridis(discrete = TRUE,
labels = qBr(ACS_2018_plot, "percent_Own_Pre2010_per"),
name = "Owned Pre-2010\n(Quintile Breaks)") +
labs(title = "Percentage of Residents in Owner-Occupied Housing: \nMoved in Before 2010") +
mapTheme(),
ggplot()+
geom_sf(data=ACS_2018_plot, aes(fill=q5(percent_Own_2015to2018_per)))+
scale_fill_viridis(discrete = TRUE,
labels = qBr(ACS_2018_plot, "percent_Own_2015to2018_per"),
name = "Quintile Breaks") +
labs(title = "Percentage of Residents in Owner-Occupied Housing: \nMoved in Between 2015 and 2018") +
mapTheme())
After collecting the variety of data described above to serve as indicators of residential permits, we aggregated all data to our previously created fishnet. For point data (e.g., sanitation violations, vacant lot locations), we count the number of incidents within each grid cell. For census data (e.g., median household income), we join the census data values from the census tract where the centroid of each grid cell is located.
#put other data into fishnet.
vars_net <-
rbind(sanitation, service, vacant) %>%
st_join(., fishnet, join=st_within) %>% #if point is within this polygon, assign the polygon id to this point. then get it into the unit of grid polygons
st_drop_geometry() %>%
group_by(uniqueID, Legend) %>% #group by unique id and the type of variable, in this case just one cars
summarize(count = n()) %>% #counting each point per grid cell
full_join(fishnet, by = "uniqueID") %>%
spread(Legend, count, fill=0) %>%
st_sf() %>%
dplyr::select(-`<NA>`) %>%
na.omit() %>%
ungroup()
vars_net<-
vars_net%>%
st_centroid()%>%
st_join(ACS_2018)%>%
na.omit()
As we attempt to predict construction permits across space, it is important to account for the spatial process involved in the clustering of construction permits. In this section we will explain the features we create as a means of accounting for spatial clustering.
Next we create average nearest neighbor features for each point-levek risk factor (sanitation reports, service requests, and vacant lots) by converting the grid cells to centroid points and then measuring the distance to 3 risk factor points. This better accounts for the relative distance to our point risk factors compared to the alternative of simply summing the factors by grid cell.
nn_function <- function(measureFrom,measureTo,k) {
measureFrom_Matrix <-
as.matrix(measureFrom)
measureTo_Matrix <-
as.matrix(measureTo)
nn <-
get.knnx(measureTo, measureFrom, k)$nn.dist
output <-
as.data.frame(nn) %>%
rownames_to_column(var = "thisPoint") %>%
gather(points, point_distance, V1:ncol(.)) %>%
arrange(as.numeric(thisPoint)) %>%
group_by(thisPoint) %>%
summarize(pointDistance = mean(point_distance)) %>%
arrange(as.numeric(thisPoint)) %>%
dplyr::select(-thisPoint) %>%
pull()
return(output)
}
st_c <- st_coordinates
st_coid <- st_centroid
vars_net <-
vars_net %>%
mutate(
Sanitation.nn =
nn_function(st_c(st_coid(vars_net)), st_c(sanitation),3),
Service.nn =
nn_function(st_c(st_coid(vars_net)), st_c(service),3),
Vacant.nn =
nn_function(st_c(st_coid(vars_net)), st_c(vacant),3))
We next calculate the distance to downtown Philadelphia (Center City) and add the risk factor to the fishnet. We believe this serves to reflect the effect of proximity to the central business and growth hub of the city.
ccPoint <-
filter(nhood, name == "CENTER_CITY") %>%
st_centroid()
vars_net$ccDistance =
st_distance(st_centroid(vars_net),ccPoint) %>%
as.numeric()
The figures below depict a selection of risk factors mapped to the fishnet. The variety of spatial distributions across these maps indicate that the risk factors illustrate different spatial processes. For example, locations with high concentrations of residents with a Bachelor’s degree are concentrated in the Center City and Northwest Philadelphia areas, while distance to the nearest three sanitation violations are distributed roughly evenly across the city.
grid.arrange(ncol=3,
ggplot()+
geom_sf(data=vars_net, aes(color=Median_HHInc))+
scale_color_viridis()+
labs(title="Median Household Income")+
mapTheme(),
ggplot()+
geom_sf(data=vars_net, aes(color=percent_HS))+
scale_color_viridis()+
labs(title="Percent of Voting-Age Population \nwithout a High School Degree")+
mapTheme(),
ggplot()+
geom_sf(data=vars_net, aes(color=percent_bach))+
scale_color_viridis()+
labs(title="Percent of Voting-Age Population \nwith a Bachelors Degree")+
mapTheme(),
ggplot()+
geom_sf(data=vars_net, aes(color=percent_ownOcc))+
scale_color_viridis()+
labs(title="Percent of the Population Living \nin Owner-Occupied Housing")+
mapTheme(),
ggplot()+
geom_sf(data=vars_net, aes(color=percent_Own_Pre2010))+
scale_color_viridis()+
labs(title="Percent of the Population Living in \nOwner-Occupied Housing: Moved in Before 2010")+
mapTheme(),
ggplot()+
geom_sf(data=vars_net, aes(color=percent_Own_2015to2018))+
scale_color_viridis()+
labs(title="Percent of the Population Living in \nOwner-Occupied Housing: Moved in Between 2015-2018")+
mapTheme(),
ggplot()+
geom_sf(data=vars_net, aes(color=percent_Rent_Pre2010))+
scale_color_viridis()+
labs(title="Percent of the Population Living in \nRenter-Occupied Housing: Moved in Before 2010")+
mapTheme(),
ggplot()+
geom_sf(data=vars_net, aes(color=percent_Own_2015to2018))+
scale_color_viridis()+
labs(title="Percent of the Population Living in \nRenter-Occupied Housing: Moved in Between 2015-2018")+
mapTheme(),
ggplot()+
geom_sf(data=vars_net, aes(color=Sanitation.nn))+
scale_color_viridis()+
labs(title="Distance to Nearest 3 Saniation Violations")+
mapTheme(),
ggplot()+
geom_sf(data=vars_net, aes(color=Service.nn))+
scale_color_viridis()+
labs(title="Distance to Nearest 3 Service Requests")+
mapTheme(),
ggplot()+
geom_sf(data=vars_net, aes(color=Vacant.nn))+
scale_color_viridis()+
labs(title="Distance to Nearest 3 Vacant Lots")+
mapTheme(),
ggplot()+
geom_sf(data=vars_net, aes(color=ccDistance))+
scale_color_viridis()+
labs(title="Distance to Center City")+
mapTheme())
Finally, we perform a join to combine the permit data with the risk factor data and join neighborhoods to the final net.
## important to drop the geometry from joining features
final_net <-
left_join(permit_net, st_drop_geometry(vars_net), by="uniqueID")
#polygon to polygon joins are hard.
final_net <-
st_centroid(final_net) %>% #take the centroid of the fishnet
st_join(dplyr::select(nhood, name), by = "uniqueID") %>% #spatially join those withinthe nhood polygons nd polict districs. ie assign the neighborhood to the fishnet id for whichever nhood the fishnet centroid falls into
#st_join(dplyr::select(policeDistricts, District), by = "uniqueID") %>%
st_drop_geometry() %>%
left_join(dplyr::select(final_net, geometry, uniqueID)) %>% #get the fishnet back in to get the polygons. drop the geom to do the left join and then being it back in
st_sf() %>%
na.omit()
# for live demo
# mapview::mapview(final_net, zcol = "District")
We use a geospatial risk model where the dependent variable is new construction permits. We work to predict the risk of new construction permits in particular areas of the city.
The success of our model is dependent on its ability to account for spatial clustering at multiple scales. Here we use Local Moran’s I to explore the local spatial process. The null hypothesis is that the count of new construction permits is randomly distributed relative to its immediate neighbors.
We use a nearest neighbor weights matrix to relate a unit (here a fishnet grid) to its eight adjacent neighbors ( this is called a queen continuity).
## generates warnings from PROJ issues
## {spdep} to make polygon to neighborhoods...
final_net.nb <- poly2nb(as_Spatial(final_net), queen=TRUE) #polygons into neighborhood which gives us list of weights for which neighbors it has. creting a netowkr graph of one grid to all others.
## ... and neighborhoods to list of weigths
final_net.weights <- nb2listw(final_net.nb, style="W", zero.policy=TRUE)
The inputs of the Local Moran test are the count of new construction permits and the spatial weights matrix. We combine the results of our Local Moran test with the final net and map a few useful test statistics - the Local Morans I value, the p-value, and significant hotspots. We determine the significant hotspots as grid cells that have higher local counts than could be expected under randomness – defined here as a p-value less than 0.00001. By using a smaller p-value to define a significant spot, we get a clear picture of a few intense new construction permit hotspots – notably in Center City and in northeast Philadelphia near the Fishtown neighborhood.
With the Local Moran’s I test, we reject the null hypothesis that the permit count at a given location is randomly distributed relative to it’s immediate neighbors. That is, we can test for (and control for) the spatial autocorrelation of the model errors at the local level.
final_net.localMorans <-
cbind(
as.data.frame(localmoran(final_net$countpermits, final_net.weights)),
as.data.frame(final_net)) %>%
st_sf() %>%
dplyr::select(Permit_Count = countpermits,
Local_Morans_I = Ii,
P_Value = `Pr(z > 0)`) %>%
mutate(Significant_Hotspots = ifelse(P_Value <= 0.00001, 1, 0)) %>%
gather(Variable, Value, -geometry)
vars <- unique(final_net.localMorans$Variable)
varList <- list()
for(i in vars){
varList[[i]] <-
ggplot() +
geom_sf(data = filter(final_net.localMorans, Variable == i),
aes(fill = Value), colour=NA) +
scale_fill_viridis(name="") +
labs(title=i) +
mapTheme() + theme(legend.position="bottom")}
do.call(grid.arrange,c(varList, ncol = 4, top = "Local Morans I statistics, Permit"))
We use this hotspot information to create a spatial feature as a means for controlling for this local spatial autocorrelation. Here we calculate the distance of each grid cell to the nearest significant hotspot as a variable “Distance to Hotspot”.
# generates warning from NN
# final_net <- final_net %>%
# mutate(abandoned.isSig =
# ifelse(local_morans[,5] <= 0.001, 1, 0)) %>% #how close each grid cell is to a sig hotspot
# mutate(abandoned.isSig.dist =
# nn_function(st_c(st_coid(final_net)),
# st_c(st_coid(filter(final_net, abandoned.isSig == 1))),
# k = 1))
final_net <-
final_net %>%
mutate(permit.isSig =
ifelse(localmoran(final_net$countpermits,
final_net.weights)[,5] <= 0.0000001, 1, 0)) %>% #does this need to changed?
mutate(permit.isSig.dist =
nn_function(st_coordinates(st_centroid(final_net)),
st_coordinates(st_centroid(
filter(final_net, permit.isSig == 1))), 1))
ggplot() +
geom_sf(data = final_net, aes(fill=permit.isSig.dist), colour=NA) +
scale_fill_viridis(name="NN Distance") +
labs(title="Permit NN Distance") +
mapTheme()
## What does k = 1 represent? the distance to my closest significant hot spot. Want the biggest number when we're close to a hot spot. Exposure to closest one. Can we plot this?
From the correlation plot of our numerical variables, we see that this new Distnace to Hotspot variable is negatively correlated with the count of new construction permits. That is, as the distance to a significant hotspot increases, the count of permits decreases.
We also see a positive correlation between the percentage of the population with bachelors degrees and count of new construction permits. This is expected given what is known about the nature of new homeowners in changing neighborhoods, and supports our hypothesis about the potential for displacement given these new construction permits alongside higher education levels.
# correlation.long <-
# st_drop_geometry(final_net) %>%
# dplyr::select(-uniqueID, -cvID, -name,-ccDistance) %>%
# gather(Variable, Value, -countpermits)
correlation.long <-
st_drop_geometry(final_net) %>%
dplyr::select(.,-Sanitation, -Vacant, -Service, -cvID, -percent_assoc,-percent_Own_2010to2014, -percent_Rent_2010to2014, -percent_NoHS, -percent_SomeCollege,-permit.isSig, -percent_GradProf, -percent_rentOcc, -ccDistance) %>%
gather(Variable, Value, -countpermits)
# correlation.cor <-
# correlation.long %>%
# group_by(Variable) %>%
# summarize(correlation = cor(Value, countpermits, use = "complete.obs"))
#
# ggplot(correlation.long, aes(Value, countpermits)) +
# geom_point(size = 0.1) +
# geom_text(data = correlation.cor, aes(label = paste("r =", round(correlation, 2))),
# x=-Inf, y=Inf) +
# geom_smooth(method = "lm", se = FALSE, colour = "black") +
# facet_wrap(~Variable, ncol = 2, scales = "free") +
# labs(title = "Permit count as a function of risk factors") +
# plotTheme()
regVars <-
#final_net %>%
select_if(st_drop_geometry(final_net), is.numeric) %>%
dplyr::select(.,-Sanitation, -Vacant, -Service, -cvID, -percent_assoc,-percent_Own_2010to2014, -percent_Rent_2010to2014, -percent_NoHS, -percent_SomeCollege,-permit.isSig, -percent_GradProf, -percent_rentOcc) %>%
na.omit()
ggcorrplot(
round(cor(regVars), 1),
p.mat = cor_pmat(regVars),
colors = c("#25CB10", "white", "#FA7800"),
type="lower",
insig = "blank") +
labs(title = "Correlation across numeric variables")
# colNameTbl <-
# colnames(regVars)
Because the count of new construction permits in most grid cells will be quite low (if not zero), we use a linear Poisson regression to best account for the skewed dependent variable distribution.
We create two sets of independent variables – one including our newly created variables for distance to a significant theft hot spot and one with only risk factor variables – as a way to display the importance of generalizability in different spatial contexts, and how the hotspot variable improves the models generalizability.
reg.vars <- c("Sanitation.nn", "Service.nn", "Vacant.nn","ccDistance", "Median_HHInc", "percent_HS", "percent_bach","percent_ownOcc", "percent_Own_Pre2010", "percent_Own_2015to2018","percent_Rent_Pre2010", "percent_Rent_2015to2018")
reg.ss.vars <- c("Sanitation.nn", "Service.nn", "Vacant.nn","ccDistance", "Median_HHInc", "percent_HS", "percent_bach","percent_ownOcc", "percent_Own_Pre2010", "percent_Own_2015to2018","percent_Rent_Pre2010", "percent_Rent_2015to2018","permit.isSig", "permit.isSig.dist")
We create two kinds of folds of our data in order to cross-validate - random folds and neighborhood folds.
The LOGO-CV cross validation method iteratively excludes one fold at a time from the model training, and then predicts on that excluded fold. For the neighborhood folds, we assign each grid cell not in that neighborhood to the training set and then test on each grid cell in that neighborhood. This process is repeated until each neighborhood has acted as the hold out. In this way, we ensure that the model training is not affected by the random inclusion or exclusion of an outlier in the training set. However, using neighborhood as the holdout criteria implies an assumption of similarity across neighborhoods in the city, as will be discussed.
crossValidate <- function(dataset, id, dependentVariable, indVariables) {
allPredictions <- data.frame()
cvID_list <- unique(dataset[[id]])
#create test and train folds
for (i in cvID_list) {
thisFold <- i
cat("This hold out fold is", thisFold, "\n")
fold.train <- filter(dataset, dataset[[id]] != thisFold) %>% as.data.frame() %>%
dplyr::select(id, geometry, indVariables, dependentVariable)
fold.test <- filter(dataset, dataset[[id]] == thisFold) %>% as.data.frame() %>%
dplyr::select(id, geometry, indVariables, dependentVariable)
# regress count of permits on the training fold
regression <-
glm(countpermits ~ ., family = "poisson",
data = fold.train %>%
dplyr::select(-geometry, -id))
#use regression to predict count of permits
thisPrediction <-
mutate(fold.test, Prediction = predict(regression, fold.test, type = "response"))
allPredictions <-
rbind(allPredictions, thisPrediction)
}
return(st_sf(allPredictions))
}
We cross validate four different regressions. Two perform random k-fold cross validation - one using the simple risk factors and one adding the distance to significant hotspots variable. Two others perform LOGO-CV based on the neighborhood name - again, one using the simple risk factors and one adding the distance to significant hotspots variable.
reg.cv <- crossValidate(
dataset = final_net,
id = "cvID",
dependentVariable = "countpermits",
indVariables = reg.vars) %>%
dplyr::select(cvID = cvID, countpermits, Prediction, geometry)
reg.ss.cv <- crossValidate(
dataset = final_net,
id = "cvID",
dependentVariable = "countpermits",
indVariables = reg.ss.vars) %>%
dplyr::select(cvID = cvID, countpermits, Prediction, geometry)
reg.spatialCV <- crossValidate(
dataset = final_net,
id = "name",
dependentVariable = "countpermits",
indVariables = reg.vars) %>%
dplyr::select(cvID = name, countpermits, Prediction, geometry)
reg.ss.spatialCV <- crossValidate(
dataset = final_net,
id = "name",
dependentVariable = "countpermits",
indVariables = reg.ss.vars) %>%
dplyr::select(cvID = name, countpermits, Prediction, geometry)
Each regression error is created by taking the difference between the predicted count of new construction permits and the observed count of construction permits.
reg.summary <-
rbind(
mutate(reg.cv, Error = Prediction - countpermits,
Regression = "Random k-fold CV: Just Risk Factors"),
mutate(reg.ss.cv, Error = Prediction - countpermits,
Regression = "Random k-fold CV: Spatial Process"),
mutate(reg.spatialCV, Error = Prediction - countpermits,
Regression = "Spatial LOGO-CV: Just Risk Factors"),
mutate(reg.ss.spatialCV, Error = Prediction - countpermits,
Regression = "Spatial LOGO-CV: Spatial Process")) %>%
st_sf()
We visualize the relative performance of each regression by examining the mean average error (MAE) distributions for each fold. The MAE is the absolute value of the mean error.
error_by_reg_and_fold <-
reg.summary %>%
group_by(Regression, cvID) %>%
summarize(Mean_Error = mean(Prediction - countpermits, na.rm = T),
MAE = mean(abs(Mean_Error), na.rm = T),
SD_MAE = mean(abs(Mean_Error), na.rm = T)) %>%
ungroup()
error_by_reg_and_fold %>%
ggplot(aes(MAE)) +
geom_histogram(bins = 30, colour="black", fill = "#FDE725FF") +
facet_wrap(~Regression) +
geom_vline(xintercept = 0) + scale_x_continuous(breaks = seq(0, 8, by = 1)) +
labs(title="Distribution of MAE", subtitle = "k-fold cross validation vs. LOGO-CV",
x="Mean Absolute Error", y="Count")
We see that the regressions that included the Distance to Hotspot variables (on the right had side of the distribution matrix) had more clustered errors. That is, there were fewer errors of high magnitudes. LOGO-CV assumes that the spatial processes of all other neighborhoods apply to the one hold out, when in actuality that is likely not the case. By using Distance to Hotspot to account for local variability, we improve the models predictive capability particularly in hotspots with high counts of permits. The maps below articulate the reduction in MEA across space that comes from including the spatial process variable as opposed to only risk factors.
error_by_reg_and_fold %>%
filter(str_detect(Regression, "LOGO")) %>%
ggplot() +
geom_sf(aes(fill = MAE)) +
facet_wrap(~Regression) +
scale_fill_viridis() +
labs(title = "Permit errors by LOGO-CV Regression") +
mapTheme() + theme(legend.position="bottom")
The table of mean MAE and standard deviation of MAE below shows that the random k-fold with spatial processes has the smallest error. The spatial LOGO likely has a higher error because of its assumption that experiences in all other neighborhoods can apply accurately to one.
st_drop_geometry(error_by_reg_and_fold) %>%
group_by(Regression) %>%
summarize(Mean_MAE = round(mean(MAE), 2),
SD_MAE = round(sd(MAE), 2)) %>%
kable(caption = "MAE by regression") %>%
kable_styling("striped", full_width = F) %>%
row_spec(2, color = "black", background = "#FDE725FF") %>%
row_spec(4, color = "black", background = "#FDE725FF")
| Regression | Mean_MAE | SD_MAE |
|---|---|---|
| Random k-fold CV: Just Risk Factors | 0.43 | 0.43 |
| Random k-fold CV: Spatial Process | 0.29 | 0.34 |
| Spatial LOGO-CV: Just Risk Factors | 1.25 | 2.50 |
| Spatial LOGO-CV: Spatial Process | 0.39 | 0.89 |
mean(final_net$countpermits)
## [1] 0.5698201
These results are further visualized by examining the MEA by decile of permit counts. The use of the hotspot variable greatly reduced the error in the areas with the highest density of permits.
Still, all models under predicts in high density areas and over predict in low density aras. We could improve this by further engineering spatial features to minimize this discrepency.
st_drop_geometry(reg.summary) %>%
group_by(Regression) %>%
mutate(Permit_Decile = ntile(countpermits, 10)) %>%
group_by(Regression, Permit_Decile) %>%
summarize(meanObserved = mean(countpermits, na.rm=T),
meanPrediction = mean(Prediction, na.rm=T)) %>%
gather(Variable, Value, -Regression, -Permit_Decile) %>%
ggplot(aes(Permit_Decile, Value, shape = Variable)) +
geom_point(size = 2) + geom_path(aes(group = Permit_Decile), colour = "black") +
scale_shape_manual(values = c(2, 17)) +
facet_wrap(~Regression) + xlim(0,10) +
labs(title = "Predicted and observed permit by observed permit decile")
WE CAN TAKE THIS OUT MAYBE, THE SPATIAL PROCESS DOESN’T REDUCE ERRORS AT ALL BETWEEN RACE. COULD BE A DISCUSSION ABOUT HOW AREAS WITH HIGHER NON WHITE POPULATIONS ARE SEEING HIGHER PERMIT COUNTS AND DISPLACEMENT?
Another important level of generalizability is across social dimensions such as race and income. Below we see a map of the racial context of Philadelphia looking at the distinction between majority white and non white census tracts.
tracts18 <-
get_acs(geography = "tract", variables = c("B01001_001E","B01001A_001E"),
year = 2018, state=42, county=101, geometry=T) %>%
st_transform('ESRI:102729') %>%
dplyr::select(variable, estimate, GEOID) %>%
spread(variable, estimate) %>%
rename(TotalPop = B01001_001,
NumberWhites = B01001A_001) %>%
mutate(percentWhite = NumberWhites / TotalPop,
raceContext = ifelse(percentWhite > .5, "Majority_White", "Majority_Non_White")) %>%
.[nhood,]
## Getting data from the 2014-2018 5-year ACS
## Downloading feature geometry from the Census website. To cache shapefiles for use in future sessions, set `options(tigris_use_cache = TRUE)`.
ggplot()+
geom_sf(data=tracts18, aes(fill=raceContext))+
#scale_color_viridis()+
labs(title="Race Context in Philadelphia")+
mapTheme()
reg.summary %>%
filter(str_detect(Regression, "LOGO")) %>%
st_centroid() %>%
st_join(tracts18) %>%
na.omit() %>%
st_drop_geometry() %>%
group_by(Regression, raceContext) %>%
summarize(mean.Error = mean(Error, na.rm = T)) %>%
spread(raceContext, mean.Error) %>%
kable(caption = "Mean Error by neighborhood racial context") %>%
kable_styling("striped", full_width = F)
## Warning in st_centroid.sf(.): st_centroid assumes attributes are constant over
## geometries of x
## `summarise()` regrouping output by 'Regression' (override with `.groups` argument)
| Regression | Majority_Non_White | Majority_White |
|---|---|---|
| Spatial LOGO-CV: Just Risk Factors | 0.0612936 | 0.0876799 |
| Spatial LOGO-CV: Spatial Process | -0.0214445 | 0.0421587 |
This model is able to predict the relative risk of new construction permits, and thus risk of displacement, across Philadelphia. In the map below we see the highest risk areas in dark purple, most often surrounded by areas in the second highest risk category.
permit_risk_sf <-
filter(reg.summary, Regression == "Spatial LOGO-CV: Spatial Process") %>%
mutate(label = "Risk Predictions",
Risk_Category = ntile(Prediction, 100),
Risk_Category = case_when(
Risk_Category > 99 ~ "> 99%",
Risk_Category >= 98 & Risk_Category <= 99 ~ "98% to 99%",
Risk_Category >= 90 & Risk_Category <= 97 ~ "90% to 97%",
Risk_Category >= 70 & Risk_Category <= 89 ~ "70% to 89%",
Risk_Category >= 50 & Risk_Category <= 69 ~ "50% to 69%",
Risk_Category >= 30 & Risk_Category <= 49 ~ "30% to 49%",
Risk_Category >= 1 & Risk_Category <= 29 ~ "1% to 29%"))
permit_risk_sf %>%
na.omit() %>%
gather(Variable, Value, -label, -Risk_Category, -geometry) %>%
ggplot() +
geom_sf(aes(fill = Risk_Category), colour = NA) +
geom_sf(data=nhood, fill = "transparent") +
#geom_sf(data = sample_n(cvID, 300), size = .5, colour = "black") +
#facet_wrap(~label, ) +
scale_fill_viridis(discrete = TRUE) +
labs(title="Risk Predictions",
subtitle="New Construction Permit Predictions") +
mapTheme()
The bar chart below displays the top five neighborhoods at risk of new construction permits and risk of displacemnet. Based on the map of risk, it is not surprising that three of these top five neighborhoods are located near one another in north Philadelphia (Fishtown, West Kensington, and East Kensington), with the remaining two also in close proximity to each other (Grad Hosptial and Point Breeze). These results indicate that improvements to the spatial process in our model are incredibly important, as the risk of new construction permits is very much not randomly distributed across space.
# %>%
# cbind(
# aggregate(
# dplyr::select(theft18) %>% mutate(theftCount = 1), ., sum) %>%
# mutate(theftCount = replace_na(theftCount, 0))) %>%
# dplyr::select(label,Risk_Category, theftCount)
# permit_risk_sf_nh_count <-
# permit_risk_sf %>%
# dplyr::select(cvID, countpermits, Risk_Category) %>%
# st_drop_geometry() %>%
# group_by(cvID) %>%
# summarise(Predicted_Permits=sum(countpermits)) %>%
# dplyr::filter(., Predicted_Permits>180) %>%
# arrange(.,-Predicted_Permits) %>%
# rename(Neighborhood = cvID) %>%
# ggplot() +
# geom_bar(aes(x=reorder(Neighborhood, -Predicted_Permits), Predicted_Permits), fill = "#1f2a59", stat = "identity") +
# labs(x = "Neighborhood",
# title = "Top 10 Neighborhoods by Predicted Permits") +
# #scale_y_continuous(limits = c(0,100)) +
# plotTheme()
highest_risk_nhoods <-
permit_risk_sf %>%
dplyr::select(cvID, Risk_Category, countpermits) %>%
dplyr::filter(., Risk_Category =="> 99%") %>%
st_drop_geometry() %>%
group_by(cvID) %>%
summarise(Predicted_Permits=sum(countpermits)) %>%
dplyr::filter(., Predicted_Permits>52) %>%
arrange(.,-Predicted_Permits) %>%
rename(Neighborhood = cvID)
ggplot(highest_risk_nhoods) +
geom_bar(aes(x=reorder(Neighborhood, -Predicted_Permits), Predicted_Permits), fill = "#1f2a59", stat = "identity") +
labs(x = "Neighborhood",
title = "Neighborhoods with Predicted Permit Risk greater than 99%") +
#scale_y_continuous(limits = c(0,100)) +
plotTheme()
As part of our analysis, we collected data on Registered Community Organizations (RCOs) in Philadelphia, including the RCO boundaries and primary contact information. We have matched the RCOs with Philadelphia neighborhoods and provided a table of each RCO that makes the contact information readily available. We intend this information to complement the results from our predictive analysis: as neighborhoods are identified as at risk to displacement, staff from the City may wish to contact trusted organizations in that location in order to begin a process to support longtime residents.
nhood_name<- nhood%>% dplyr::select(name)%>%
rename(Neighborhood=name)
rcos_final<-
st_centroid(rcos)%>%
st_join(nhood_name)%>%
dplyr::select(ORGANIZATION_NAME, ORGANIZATION_ADDRESS, PRIMARY_NAME, PRIMARY_ADDRESS, PRIMARY_EMAIL, PRIMARY_PHONE, Neighborhood)%>%
arrange(Neighborhood)
## Warning in st_centroid.sf(rcos): st_centroid assumes attributes are constant
## over geometries of x
rcos_final<-rcos_final[c(7, 1, 2, 3, 4, 5, 6, 8)]
st_drop_geometry(rcos_final) %>%
kable(caption = "Registered Community Organizations by Neighborhood")%>%
kable_styling("striped", full_width = F)%>%
scroll_box(height = "300px")
| Neighborhood | ORGANIZATION_NAME | ORGANIZATION_ADDRESS | PRIMARY_NAME | PRIMARY_ADDRESS | PRIMARY_EMAIL | PRIMARY_PHONE |
|---|---|---|---|---|---|---|
| ALLEGHENY_WEST | RAH Civic Association | 3106 N. Spangler Street, 19132 | Rosalie Cooper | 3106 N Spangler Street, 19132 | rahcivicassociation@yahoo.com | (215)696-4832 |
| ALLEGHENY_WEST | Swampoodle Neighborhood Parcels Association | 1846 N 28th Street 19121 | Adrienne Fernandez | 1846 N 28th Street 19121 | swampoodleneighborhoodparcels@gmail.com | 2152796456 |
| ALLEGHENY_WEST | Community Action Group | 3149 N Pennock St, Philadelphia PA 19132 | Denise Whittaker | 3149 N Pennock St, Philadelphia PA 19132 | whittade@comcast.net | 2153602813 |
| BELLA_VISTA | Bella Vista Neighbors Association | PO Box 63955, 19147 | Dennis Hallda | P.O. Box 63955 Philadelphia, PA 19147 | zoning@bellavistaneighbors.org | 2156270057 |
| BELMONT | Belmont Alliance Civic Association CDC | 871 North Holly Street Floor #2, 19104 | Bettye Ferguson | 871 North Holly Street Floor #1, 19104 | belmontalliance@gmail.com | 2678822596 |
| BELMONT | Holly Street Neighbors CDC | 737 N. Holly Street Philadelphia, PA 19104 | Alverita Spain | 737 N. Holly Street Philadelphia, PA 19104 | hollystreetneighbors@gmail.com | 2152395305 |
| BELMONT | West Belmont Civic Association | 4311 Otter Street Philadelphia, PA 19104 | David Pickett | 4311 Otter Street Philadelphia, PA 19104 | depickett@westbelmontcivic.org | 2158735722 |
| BELMONT | Parkside Area Community Association | 4032 Parkside Avenue #2 Philadelphia , PA 19104 United States Philadelphia, PA 19131 | Netrisa Dockery | 4032 Parkside Avenue #2 Philadelphia, PA 19104 United States | netrisat@yahoo.com | 2676795812 |
| BELMONT | People’s Emergency Center Community Development Corporation | 325 N 39th St, 19104 | James Wright | 3939 Warren Street 2nd floor Philadelphia, PA 19104 | jameswright@pec-cares.org | 2677775853 |
| BREWERYTOWN | 29th Democratic Ward | 1233 north 29th street Philadelphia , Pennsylvania 19121 | Clyde Sanders | 2332 West Nicholas street Philadelphia , Pennsylvania 19121 | clydesanders74@gmail.com | 2157711819 |
| BREWERYTOWN | Celestial Community Development Corporation | 2800 W. Thompson Street, 19121 | Michelle Brownlee | 2800 W. Thompson Street Philadelphia, PA 19121 United States | celestialwordmin@gmail.com | 2155008013 |
| BREWERYTOWN | Brewerytown Sharswood Community Civic Association | 3000 “D” W Master Street 19121 | Warren McMichael | 2514 W Stewart Philadelphia, PA 19121 Philadelphia, PA 19121 | brew.sharsnas@gmail.com | 2157635507 |
| BRIDESBURG | Bridesburg Community Action Alliance | 4413 Garden Street | Yvonne Stephens | 4413 Garden Street | yvonnestephens2@yahoo.com | 2159150078 |
| BRIDESBURG | Bridesburg Civic Association | 2824 Plum Street, 19137 | Harry Enggasser | 2824 Plum Street, 19137 | henggasser@yahoo.com | 2672533189 |
| BUSTLETON | Greater Bustleton Civic League | 9823 Verree Rd Philadelphia Philadelphia, PA 19115 | Jack O’Hara | 9823 Verree Rd Philadelphia, PA 19115 | jackohara1@aol.com | 2156739519 |
| BYBERRY | Arbours at Eagle Pointe Community Association | 2675 Veronica Lane Phildelphia, PA 19116 | Robert Purvis | 15108 Dahlia Drive, 19116 | purbkkcm1@gmail.com | 2158802044 |
| CALLOWHILL | Callowhill Neighborhood Association | 1115 Hamilton St., 19123 | Sarah McEneaney | 1115 Hamilton St., 19123 | sarahmceneaney@me.com | 2156204647 |
| CARROLL_PARK | Parkside Association | Parkside Evans Recreation Center, 53rd & Parkside Avenue 19131 | Lucinda Hudson | 1719 N. 52nd Street Suite “G” 19131 | lhudson@parksideassociation.org | 2158699752 |
| CARROLL_PARK | Concerned Citizens Revitalization | 6010 Lansdowne Avenue, Philadelphia, PA 19131 | Gertrude Weaver | 6010 Lansdowne Avenue, Philadelphia, PA 19131 | weaversenergy@hotmail.com | 2158779411 |
| CARROLL_PARK | Hestonville Civic Association | 1623 55th Street, 19131 | Sheila Buchanan | 1623 North 55th Street, 19131 | hestonville@gmail.com | 2675047800 |
| CARROLL_PARK | Cathedral Park Community Development Association | P.O. Box 11796, Philadelphia, PA 19101 | Mark Frog Harris | P.O. Box 11796, Philadelphia, PA 19101 | MarkFrogHarris@verizon.net | 2156855340 |
| CEDAR_PARK | Cedar Park Neighbors | 4740 Baltimore Ave Philadelphia, PA 19143 | Shawn Markovich | C/O Cedar Park Neighbors 4740 Baltimore Ave Philadelphia, PA 19143 | zoning@cedarparkneighbors.org | 2672258283 |
| CEDAR_PARK | Cedar Point Park Neighborhood Association | c/o 4614 Cedar Avenue Philadelphia, PA 19143 | Theresa Sims | C/o 4614 Cedar Avenue Philadelphia, PA 19143 | cedarpointparkneighborhoodassociation@hotmail.com | 2152228020 |
| CEDAR_PARK | 46th Ward Democratic Committee | 4619 Chester Avenue, Philadelphia, PA 19143 | Catherine Blunt | 4918 Walton Avenue, Philadelphia, PA 19143 | 46wardrco@gmail.com | 2157471285 |
| CEDAR_PARK | Kingsessing Spirit |
5426 Baltimore Avenue Philadelphia, PA 10143 |
Conor McAleer | 5426 Baltimore Ave, Philadelphia, PA 191430 | kingsessingspiritrco1@gmail.com | 6102124853 |
| CEDAR_PARK | 46th Republican Ward | 4256 Regent Square, Philadelphia PA 19104 | Denise Furey | 4256 Regent Square, Philadelphia PA 19104 | denise.furey@wolfe.org | 2152664121 |
| CEDARBROOK | 50th Democratic Ward | 7626 Forrest Avenue Philadelphia, PA 19150 | Gerry Sizemore | PO Box 27476, Philadelphia, 19118 | Grndmager@verizon.net | (215)549-7374 |
| CHESTNUT_HILL | 9th Republican Ward | 22 W. Southampton Ave Philadelphia, PA 19118 | Christopher Lins | 22 W. Southampton Ave, Philadelphia Pa 19118 | lins.christopher@gmail.com | 2152055776 |
| CHESTNUT_HILL | Chestnut Hill Conservancy | 8708 Germantown Ave, 19118 | Patricia Cove | 8504 Germantown Ave Philadelphia, PA 19118 | patricia@patriciacove.com | 2152483219 |
| CHESTNUT_HILL | Friends of the Wissahickon | 40 West Evergreen Avenue Suite 108 Philadelphia, PA 19118 | Ruffian Tittman | 40 West Evergreen Avenue Suite 108 Philadelphia, PA 19118 | tittmann@fow.org | 2152470417 |
| CHESTNUT_HILL | Chestnut Hill Community Association | 8434 Germantown Avenue, 19118 | Anne McNiff | 8434 Germantown Avenue, 2nd Floor, 19118 | RCO-CHCA@chestnuthill.org | 2152488811 |
| CHINATOWN | Asian American Federation of the United States | 1118 Buttonwood Street, Unit A Philadelphia, PA 19123 | Mahn S. Park | 1735 Stanwood Street, 19152 | mahnpark@gmail.com | 2159090936 |
| CHINATOWN | Philadelphia Chinatown Development Corporation | 301-305 N. 9th St., Phila, PA 19107 | Yue Wu | 301-305 N. 9th St., Phila, PA 19107 | ywu@chinatown-pcdc.org | 2159222156 |
| COBBS_CREEK | 60th Republican Ward | 4440 Ludlow Street Philadelphia, PA 19104 | Ross Wolfe | 4440 Ludlow Street Philadelphia, PA 19104 | RossWolfe@comcast.net | 6107451626 |
| COBBS_CREEK | 3rd Ward Executive Committee | P.O Box 6898, Philadelphia, PA 19132 | Ronald G. Waters | 108 South 61 Street, Philadelphia, PA 19139 | rwaters9@verizon.net | 2672466185 |
| COBBS_CREEK | Cobbs Creek Neighbors Association | 5800 Cobbs Creek Parkway Blanche A. Nixon/Cobbs Creek Library, 19143 | Larissa Mogano | 5234 Webster St., 19143 | cobbscreekneighbor@gmail.com | 2673429919 |
| COBBS_CREEK | 3rd Ward Republicans | 5813 Catharine Street, Philadelphia, PA 19143 | Emma Earle | 5813 Catharine Street, Philadelphia, PA 19143 | cbcofthe3w@gmail.com | 2673485049 |
| COBBS_CREEK | ACHIEVEability | 59 N . 60th Street Philadelphia, PA 19139 | Tempest Carter | 59 N. 60th Street Philadelphia, PA 19139 | tcarter@achieve-ability.org | 2154215166 |
| COBBS_CREEK | Progressive Communities CDC | 413 South 60th Street Philadelphia, PA 19143 | Tarik Ferron | c/o Maskid Mujahideen 413 South 60th Street Philadelphia, PA 19143 | tmf600@gmail.com | 2155121866 |
| DEARNLEY_PARK | Dearnley Park Civic Association | 7511 Silverwood Street, Philadelphia PA 19128 | Raymond Smith | 7511 Silverwood Street, Philadelphia, PA 19128 | jims0202@msn.com | 2153176481 |
| DICKINSON_NARROWS | Dickinson Square West Civic Association | PO Box 63891, 19147-7891 | Larry Reigel | PO Box 63891, 19147 | Zoning@DSWCA.org | (508)639-0939 |
| EAST_FALLS | East Falls Community Council | PO Box 12672, 19129 | Hilary Langer | P.O. Box 12672 c/o EFCC Philadelphia, PA 19129 United States | hilary.j.langer@gmail.com | 2156034279 |
| EAST_FALLS | East Falls Forward | 3721 Midvale Avenue Philadelphia, PA 19129 | Steve Fillmore | 4000 Gypsy Ln #334 Philadelphia, PA 19129 | fillmore.steve@gmail.com | 2154988874 |
| EAST_KENSINGTON | East Kensington Neighbors Association | 2439 Amber St, 19125 | Madison Gould | 2439 Amber St, 19125 | info@ekna.org | 2154701141 |
| EAST_OAK_LANE | Oak Lane Community Action Association | P.O. Box 2926, Philadelphia, PA. 19141 | Freida Williams | 815 Asbury Terrace, 19126 | jtw1951@aol.com | 2155494328 |
| EAST_PARKSIDE | East Parkside Residential Association | 4260 Parkside Ave. Philadelphia, PA 19104 | Bryan Harris | 4286 Parkside Ave. Philadelphia, PA 19104 | jbharris4313@yahoo.com | 2158776355 |
| EAST_PARKSIDE | Centennial Parkside Community Development Corporation | 3479 West Girard Avenue P.O. Box 28050 Philadelphia, PA 19131 | Chris Spahr | P.O. Box 28050 Philadelphia, PA 19131 | info@centennialparkside.org | 2672258356 |
| EAST_PARKSIDE | Viola Street Residents Association |
4243 VIOLA STREET PHILADELPHIA, PA 19104-1029 |
Gomez Lorraine | 4243 VIOLA STREET PHILADELPHIA, PA 19104-1029 | lorraine@mvmcdc.org | 2672708726 |
| EAST_PASSYUNK | East Passyunk Crossing Civic Association (EPX) | 1025 Mifflin Street | Leon Malloy | 1025 Mifflin Street | zoning@epcrossing.org | 6097524576 |
| EAST_PASSYUNK | South Broad Street Neighborhood Association | PO Box 54784, 19148 | Anthony Bruttaniti | 1432 S Broad Street, 19146 | bruttanitiarchitecture@comcast.net | 2152180300 |
| EASTWICK | Eastwick Friends & Neighbors Coalition | 7720 Olympus Place Philadelphia, PA 19153 | Ramona Rousseau-Reid | 8402 Brunswick Pl, 19153 | rousseau_reid@yahoo.com | 2673121510 |
| EASTWICK | 40th Democratic Ward | Mercy Wellness Center 2801 Island Avenue- 2nd Floor, 19153 | Edward Thornton | 3025 S. 74th Street Philadelphia, Pennsylvania 19153 United States | DemWard40A@gmail.com | 2158343414 |
| EASTWICK | Eastwick Community Network | 8415 Lyons Place, Philadelphia PA 19153 | Brice Baker | 7901 Mars Place Philadelphia, PA 19153 | brice0502@gmail.com | 2157683058 |
| EASTWICK | 40th Ward Republicans | PO Box 33355 Philadelphia, PA 19142-0555 | Craig Melidosian | PO Box 33355 Philadelphia, PA 19142-0555 | craigsolve@aol.com | 2158681268 |
| ELMWOOD | Southwest Community Development Corporation | 6328 Paschall Avenue Philadelphia, PA 19142 | Cynthia Ryant | 6328 Paschall Avenue Philadelphia, PA 19142 | cynthia@southwestcdc.org | 2157290804 |
| FAIRMOUNT | Fairmount Civic Association | 2633 Aspen Street Philadelphia Philadelphia, PA 19130 | Lawrence Reynolds | 2633 Aspen Street, 19130 | lreynoldsaspen@yahoo.com | 2159786638 |
| FELTONVILLE | Nueva Esperanza Housing and Economic Development | 4261 North 5th Street Philadelphia, PA 19140 | Quetcy Lozada | 4261 N. 5th Street Philadelphia, PA 19140 | qlozada@esperanza.us | (215)324-0746 |
| FELTONVILLE | ONE Feltonville and Olney Neighbors Empowered | 351 E Roosevelt Blvd | D Michael Blackie | 351 E Roosevelt Blvd | ONE.Feltonville@gmail.com | 2676504720 |
| FELTONVILLE | 42nd Democratic Ward | PO Box 46121 Philadelphia, PA 19160 | Shantey Lindsay | PO Box 46121 Phila PA 19160 | slindsay10@comcast.net | 2152058061 |
| FISHTOWN | Fishtown Neighbors Association | PO Box 3744, Phila | Ian Wilson | PO Box 3744 Philadelphia, PA 19125 | zoning@fishtown.org | 2677024690 |
| FISHTOWN | Riverside of Fishtown Neighbors Association | 1131 E Montgomery Ave Philadelphia, PA 19125 | Larissa Staszkiw | 1131 E Montgomery Ave Philadelphia, PA 19125 | larissa.staszkiw@gmail.com | 9088720942 |
| FISHTOWN | Fishtown Kensington Area Business Improvement District | 1509 North Front Street, Suite 1 | Marc Collazzo | 1509 North Front Street, Suite 1 | marc@fishtownbid.org | 2677643725 |
| FISHTOWN | Olde Richmond Civic Association | 2327 Huntingdon Street | Michael Manfroni | NA | michaelmanfroni@gmail.com | 2154691721 |
| FISHTOWN | New Kensington Community Development Corp | 2771 Ruth St. Philadelphia, PA 19125 | Jessica Hoffman | 2771 Ruth St. | jhoffman@nkcdc.org | 2154270350 |
| FOX_CHASE | Fox Chase Homeowners Association | 7610 Burholme Ave Philadelphia, PA 19111 | George Bezanis | 8314 Alicia Street Philadelphia, PA 19111 | foxchasehomeowners@gmail.com | 2157421312 |
| FOX_CHASE | Burholme Community Town Watch and Civic Association | 1128 Cottman Avenue, 19111 | Aizaz Gill | 1128 Tabor Lane Philadelphia, Pennsylvania 19111 | burholmecivic@gmail.com | 2672884169 |
| FRANCISVILLE | United Francisville Civic Association | 1531 FAIRMOUNT AVE, UNIT 2F PHILADELPHIA PHILADELPHIA, PA 19130 | Darlene Cerullo | 1531 FAIRMOUNT AVE UNIT 2F PHILADELPHIA, PA 19130 | zoning@unitedfrancisville.com | 2672578432 |
| FRANCISVILLE | Community Land Trust Corporation | 1500 W Thompson St, 19121 | Vivian VanStory | 1500 W Thompson St, 19121 | communitylandtrustcorp0@gmail.com | 2152323822 |
| FRANCISVILLE | Francisville Neighborhood Development Corporation | 1708 Ridge Ave Philadelphia, PA 19130 | Joseph McLaughlin | 1708 Ridge Avenue Philadelphia, Pa 19130 | joe.mclaughlin@sodexo.com | 3026859191 |
| FRANCISVILLE | Friends of Ogden Park | 842 N Uber Street Philadelphia, PA 19130 | Drew Kondylas | 842 N Uber Street Philadelphia, PA 19130 | kondylas@gmail.com | 2154328399 |
| FRANKFORD | Frankford CDC | 4667 Paul Street Philadelphia, Pennsylvania 19124 | Christine DeJesus | 4667 Paul Street Philadelphia, Pa 19124 | cdejesus.fcdc@gmail.com | 2157436580 |
| FRANKLINVILLE | 12th and Cambria Advisory Board | 2901 N. 12th Street, Philadelphia, PA 19133 | Norman Wooten | 2922 N. 12th Street, Philadelphia, PA 19133 | Rangesssab1@outlook.com | 2152260830 |
| FRANKLINVILLE | Nicetown-Tioga Improvement Team | 3621 N 11th St, Phila PA 19140 | Cynthia Barnes | 3621 N 11th St, Phila PA 19140 | cynthiab127@yahoo.com | 2672583111 |
| GARDEN_COURT | Garden Court Community Association | PO Box 16654, 19139 | Mary Allegra | 4603 Cedar Ave Philadelphia, PA 19143 United States | Zoning@gardencourtca.org | 2157267535 |
| GERMANTOWN_EAST | Faith Community Development Corporation (FCDC) | 108 East Price Street Philadelphia, PA. 19144 | Ines Love | 108 East Price Street Faith Community Development Corporation (FCDC) Philadelphia, PA 19144 | faithcdc.rco@gmail.com | 2677704746 |
| GERMANTOWN_EAST | Chew and Chelten Community Development Corporation | 5607 Crowson Street | Douglas Rucker | 5607 Crowson Street Philadelphia, PA 19144 | RuckerDouglas63@gmail.com | 2677788009 |
| GERMANTOWN_EAST | Awbury Arboretum Neighbors | P.O. Box 20599 | Brenna Kelly | 1138 E. Haines Street | brenna.dee@gmail.com | 6462690712 |
| GERMANTOWN_EAST | Penn Area Neighborhood Association | P.O. Box 44618 Philadelphia, PA 19144 | Nicholas Covolus | P.O. Box 44618 Philadelphia, PA 19144 | ncovolus@wister.org | 2154352875 |
| GERMANTOWN_EAST | Chew and Belfield Neighbors Club Incorporated | 6211 W Chew Avenue OR PO BOX 14134 | Rev. Chester H. Williams | PO Box 14134/ 6211 Chew Ave, 19138 | jesus4620032004@yahoo.com | 2158498021 |
| GERMANTOWN_MORTON | 59th Democratic Ward | 443 E. Haines Street, 19144 | Patrick Jones | 944 E. Rittenhouse Street, 19138 | patwjones@gmail.com | 2155261198 |
| GERMANTOWN_PENN_KNOX | Penn Knox Neighborhood Association | 5320 Germantown Ave | Irving Vaughn | NA | pennknox.germantown@gmail.com | 2678252902 |
| GERMANTOWN_SOUTHWEST | SoLo/Germantown Civic Association | 4908 Wayne Ave, 19144 | Allison Weiss | 4908 Wayne Ave, 19144 | awfromhh4@gmail.com | 2158435555 |
| GERMANTOWN_SOUTHWEST | Concerned Neighbors of Greater Germantown, Inc. | 4809 B Wayne Ave 19144 | Marlene Pryor | 28 W Logan St 19144 | marlenenabila@gmail.com | 2153817522 |
| GERMANTOWN_WEST_CENT | West Chelten Neighbors Association | P.O. Box 44342, Philadelphia PA 19144 | Cory Kegerise | P.O. Box 44342, Philadelphia PA 19144 | hello@westchelten.org | 2158687189 |
| GERMANTOWN_WEST_CENT | West Central Germantown Neighbors | 131 West Walnut Lane, 19144 | Phil Kane | 131 West Walnut Lane, 19144 | carpentryandbenchwork@gmail.com | 2677380407 |
| GERMANY_HILL | Ridge Park Civic Association | P.O. Box 35066, 19128 | Marlene Schleifer | 4876 Smick Street, Phila. Pa. 19127 | mgschleifer2@verizon.net | 2152066386 |
| GIRARD_ESTATES | Girard Estate Neighbors Association | PO Box 20116 Philadelphia, pA 19145 | Paul Rossi | PO Box 20116 Philadelphia, PA 19145 | contact@girardestateneighbors.org | 2152874715 |
| GIRARD_ESTATES | Broad Street West Civic Association | 1525 W Porter Street, Phialdelphia, PA 19145 | Henry Di Antonio | 1525 West Porter Street, Philadelphia, PA 19145 | enricodi@comcast.net | 2156689126 |
| GIRARD_ESTATES | Girard Estate Area Residents (GEAR) | 2508 S. 18th St, Phila PA 19145 | Jody Della Barba | 2508 S. 18th St, Phila PA 19145 | cellinoatt@hotmail.com | 2153346673 |
| GLENWOOD | Allegheny West Civic Association | 3101 N. 22nd Street Philadelphia, PA 19132 | Ronald Hinton | Panati Recreation Center 3101 N. 22nd Street Philadelphia, PA 19132 | rehintonjr@hotmail.com | 2672495214 |
| GRADUATE_HOSPITAL | South of South Neighborhood Association (SOSNA) | 1901 Washington Avenue *OFC B Philadelphia, PA 19146 | Nicole Koedyker | 1901 Washington Avenue *OFC B Philadelphia, PA 19146 | nicoleatsosna@gmail.com | 2157328446 |
| GRADUATE_HOSPITAL | North of Washington Avenue Coalition | 2304 Madison Square, Philadelphia 19146 | Madeline Shikomba | 2304 Madison Square, Philadelphia 19146 | northofwashingtonavecoalition@gmail.com | 2157326278 |
| GRADUATE_HOSPITAL | Washington Avenue Property Owners Association | c/o Knickerbocker Properties, 2118 Washington Avenue Suite 2000 Philadelphia, Pennsylvania 19146 | Thomas Donatucci, III | 1901 Washington Avenue, 19146 | td3@knickerbockerproperties.com | 2155455755 |
| GRAYS_FERRY | Tasker-Morris Neighbors Association | 1539 S. Patton St. Philadelphia, PA 19145 | Charles Reeves | 1539 S. Patton St. Philadelphia, PA 19145 | creeves.RAC2@gmail.com | 2672343979 |
| GRAYS_FERRY | Grays Ferry Civic Association | 2646 Reed Street Philadelphia, PA 19146 | Michael Bradley | 2646 Reed Street Philadelphia, PA 19146 | gfcacontact@gmail.com | 2677737587 |
| GRAYS_FERRY | 36th Ward GOP | 2646 Reed Street, Philadelphia, PA 19146 | Michael Bradley | 2646 Reed Street, Philadelphia, PA 19146 | 36wardgop@gmail.com | 2677737587 |
| GRAYS_FERRY | Residents Organized for Advocacy and Direction | 2615 Wharton Street Philadelphia, Pennsylvania 19146 | Meeka Outlaw | 1530 s. taney street philadelphia, pa 19146 | outlawmeeka@hotmail.com | 2675817490 |
| GRAYS_FERRY | Grays Ferry Community Council | 1501 s. 29th Street, Phila, PA 19146 | Carmine Zulli | 3637 Reed Street Philadelphia, PA 19146 | CarmineZulli@gmail.com | 2673221645 |
| HADDINGTON | 4th Democratic Ward | 4035 Lansdowne Avenue | Andre Sawyer | 6515 Haverford Avenue, 19151 | dre5750@yahoo.com | 2674441634 |
| HADDINGTON | HMC Squared Community Association, INC | Carroll Park Center for Hope, Help, & Healing 1536 N 59th Street, Philadelphia, PA 19151 | Eloise Young | 1435 N Redfield Street Philadelphia, Pa 19151 United States | weezee2003@gmail.com | 2158399753 |
| HARROWGATE | Port Richmond Industrial Development Enterprise (PRIDE) | 3535 Amber Street Philadelphia , PA 19134 | Bow Lewis | 3535 Amber Street Philadelphia , PA 19134 | Pride.Philly@yahoo.com | 2155355200 |
| HARROWGATE | Harrowgate Civic Association | 3640 Emerald Street Philadelphia , PA 19134 | Shannon Farrell | 3640 Emerald Street Philadelphia, PA 19134 | harrowgatecivicassociation@gmail.com | 2676944347 |
| HARROWGATE | Kensington Independent Civic Association | 722 E. Willard Street, 19134 | Marnie Loughrey | 722 E. Willard Street, 19134 | marnie65@verizon.net | 2154252165 |
| HARROWGATE | Impact Community Development Corporation | 1952 East Allegheny Avenue, 19134 | Rolando Sanchez | 1952 East Allegheny Avenue, 19134 | rsanchez@impactservices.org | 2157391600 |
| HARTRANFT | Asociacion Puertorriquenos En Marcha (APM) | 600 Diamond Street, 19122 | Victoria Cubillos-Cañón | 600 Diamond Street, 19122 | RCO@apmphila.org | 2672967215 |
| HARTRANFT | 37th Ward Executive Democratic Committee | 939 West Silver Street, 19133 | El Amor Mapenzi Brawn Ali | 939 West Silver Street, Philadelphia, PA 19133 | deniselaurelanderson@gmail.com | 2152239329 |
| HARTRANFT | Village of Arts and Humanities | 2544 Germantown Avenue Philadelphia, PA 19103 | Aviva Kapust | 2544 Germantown Avenue Philadelphia, PA 19133 | rco@villagearts.org | 4155315575 |
| HARTRANFT | Temple Area Property Association (TAPA) | 1639 N. Hancock Street, Suite 307 Philadelphia Philadelphia, PA 19122 United States | Peter Crawford | 1639 N. Hancock Street, Suite 307 Philadelphia, PA 19122 United States | peter@crawfordgroup.org | 2158963863 |
| HAWTHORNE | Hawthorne Empowerment Coalition | 1346 Webster Street, 19147 | Albert Hicks | 1346 Webster Street Philadelphia, PA 19147 | Zoning@hecphila.org | 2156947528 |
| HOLMESBURG | Holmesburg Civic Association | P.O. BOX 39295, 19136 | Tara Gontek | 4561 Oakmont St philadelphia 19136 United States | holmesburgcivic@gmail.com | 2156052146 |
| HUNTING_PARK | 43rd Democratic Ward | P.O Box 9727 Philadelphia, PA 19140 | Martin A Strom | 3726 North 8th Street Philadelphia, PA 19140 | mstrom011@gmail.com | 2673034989 |
| HUNTING_PARK | Hunting Park Connected | 1300 W Hunting Park Avenue Philadelphia, PA 19140 | Wadia Gardiner | 1336 W Hunting Park Avenue Philadelphia, PA 19140 | huntingparkconnected@gmail.com | 4042546529 |
| HUNTING_PARK | Hunting Park Neighborhood Advisory Committee | 3760 N Delhi Street Philadelphia Philadelphia, PA 19140 | Charles Lanier | 3760 N Delhi St, 19140 | hunting.parknac@verizon.net | 2152255560 |
| INDUSTRIAL | Philly Thrive (SWPDC) | 3108 Tasker St. | Rodney Ray | 3108 Tasker St. Philadelphia, PA 19145 | phillythrive@gmail.com | 2159604080 |
| INDUSTRIAL | Packer Park Civic Association | 3310 South 20th Street Phila Phila, Pa 19145 | Barbara Capozzi | 3310 South 20th Street Phila, Pa 19145 | BCAPOZZI@KW.COM | 2679730848 |
| JUNIATA_PARK | Juniata Park Civic Association | 4124 ‘L’ Street 19124 | Kate Clarke | 4124 L Street 19124 | KWC1228@comcast.net | 2157710660 |
| KINGSESSING | Earths Keepers Inc | P.O. BOX 22714, 19143 | Enoch Amen Ra-El | P.O. BOX 22714, 19143 | earthskeepers@protonmail.com | 8002375131 |
| KINGSESSING | 51st Ward Democratic Executive Committee | 5030 Springfield Ave, Philadelphia, PA 19143 | Gregory R. Benjamin | 5030 Springfield Ave, Philadelphia, PA 19143 | greben5030@comcast.net | 2672549972 |
| KINGSESSING | Kingsessing Area Civic Association | 1313 S. 49th Street Philadelphia, PA 19143 | Dianne Settles | 1313 South 49th Street, Philadelphia, PA 19143 | diannesettles@aol.com | 2676025279 |
| KINGSESSING | Southwest Philadelphia District Services (SWPDS) | 1557 North Valley Road, Pottstown, PA 19464 | Michael Ross | 1557 North Valley Road, Pottstown, PA | swpds@aol.com | 4842509055 |
| KINGSESSING | 51st Republican Ward | 5513 PASCHALL AVE, Box 19820 Philadelphia Philadelphia, PA 19143 | Andrew Gentsch | Box 19820 Philadelphia, PA 19143 | agent3@earthlink.net | (215)729-1090 |
| KINGSESSING | Snyderville Community Development Corporation (SCDC) | 1417 S 58th Street, 19143 | Carolina Baltazar Edwards, MSW, PhD | PO Box 867 | cbaltazarharris@gmail.com | 2673662055 |
| LAWNDALE | 35th Democratic Ward | 620 E. Allengrove Street, 19120 | Philip Grutzmacher | 485 E. Devereaux Avenue Philadelphia, PA 19111 | pgrutzmacher@msn.com | 2157226694 |
| LAWNDALE | 35th Ward GOP Committee | 405 Van Kirk Street Philadelphia, PA 19120 | Linwood Holland | 405 Van Kirk Street Philadelphia, PA 19120 | linwoodholland@yahoo.com | 2674076732 |
| LAWNDALE | Lawncrest Community Association | 620 E. Allengrove Steet, 19120 | Philip Grutzmacher | 485 Devereaux Avenue Philadelphia, PA 19111 | pgrutzmacher@msn.com | 2157226694 |
| LOGAN | Logan Civic Association | 6517 N Park Avenue, Philadelphia, PA 19126 | Eric Brice | 6517 N Park Avenue, Philadelphia, PA 19126 | 35dtwnet@gmail.com | 2155194805 |
| LOGAN | 49th Ward GOP | 500 E Godfrey Avenue Philadelphia, PA 19120 | Jacinth Roberts | 500 E Godfrey Avenue Philadelphia, PA 19120 | jjacinth31@gmail.com | 2672657981 |
| LOGAN | Logan Community Enterprise Center, Inc. | 5510 N. Marshall St. Philadelphia, PA 19140 | Darrell Choates | 1631 W. Susquehanna Avenue Philadelphia, Pennsylvania 19121 | dchoatesgc@yahoo.com | 2679873040 |
| LOGAN | Nicetown CDC | 4414 Germantown Avenue, 3rd floor Suites A&B, 19140 | Majeedah Rashid | 4414 Germantown Avenue, 19140 | majeedah@nicetowncdc.org | 2153291824 |
| LOGAN_SQUARE | Logan Square Neighborhood Association | 143 N. 22nd Street, Unit D, 19103 | Drew Murray | 143 N. 22nd Street, Unit D, 19103 | LSNAPres@gmail.com | 6102560588 |
| LOWER_MOYAMENSING | Seventh Street Community Civic Association | 415 Hoffman Street, 19148 | Bruce Baldwin | 415 Hoffman Street, 19148 | baldwinbruce@yahoo.com | 2673049161 |
| LOWER_MOYAMENSING | Lower Moyamensing Civic Association | 2437 S. Broad Street Philadelphia, PA 19148 | Patti Tahan | 2437 S. Broad Street, 19148 | lomophilly@gmail.com | 2675449597 |
| MANAYUNK | Central Manayunk Council | 109 Roxborough Avenue, Philadelphia, PA 19127 | John Teague | 109 Roxborough Avenue, Philadelphia, PA 19127 | manayunk321@aol.com | 2155201676 |
| MANAYUNK | Manayunk Neighborhood Council | 471 Ripka Street, 19128 | John Hunter | 4308 Terrace Street | johnhunter286@gmail.com | 2154872474 |
| MANTUA | Mantua Civic Association | P.O. Box 7701, 19104 | DeWayne Drummond | 3412 Haverford Avenue | mrdrumm25@gmail.com | 2672051771 |
| MANTUA | Lancaster Avenue 21st Century Business Association | 3500 Lancaster Ave, 19104 | Kwaku Boateng | 3500 Lancaster Avenue | kboateng@la21philly.org | 2672419199 |
| MANTUA | 24th Democratic Ward | 3917 Reno Street Philadelphia, Pa 19104-4807 | Bernadette Ingrid Wyche | 3917 Reno Street Philadelphia, Pa 19104-4807 | biwyche1@gmail.com | 2676700522 |
| MAYFAIR | Mayfair Civic Association | 3309 Tudor st. Philadelphia, PA 19136 | Kevin Leonard | 2990 St. Vincent St Philadelphia, PA 19152 | MayfairCivicAssociation@yahoo.com | 2675384668 |
| MAYFAIR | Mayfair Business Improvement District (BID) | 2990 St. Vincent Street, Second Floor, 19149 | Marc Collazzo | 2990 St. Vincent Street, Second Floor, 19149 | marc@mayfairbid.org | 2675384668 |
| MELROSE_PARK_GARDENS | Upper North Coalition of Community Councils | 121 East Colonial Street, Philadelphia, PA 19120 | Isaac Jackson | 121 E. Colonial Street, Philadelphia, PA 19120 | iamike33@comcast.net | 4848329121 |
| MILL_CREEK | Mill Creek Advisory Council | 4700 Brown Street Philadelphia , PA 19139 | Patrick Rushing | 4700 Brown Street Philadelphia , PA 19139 | Prush9@gmail.com | 2673143694 |
| MILL_CREEK | West Philly Together | 605 N. 52nd Street, Philadelphia , PA 19131 | Yancy Harrell | 4927 Parkside Avenue North, Philadelphia, PA 19131 | yancyharrell12@gmail.com | 2676067773 |
| MILL_CREEK | 44th Democratic Ward | PO Box 9376, 19139 | Willie Jordan | P.O. Box 9376 P.O. BOX 9376 PHILADELPHIA Philadelphia | wjordan@rcn.com | 2156687128 |
| MILLBROOK | Millbrook Civic Association | 4330 Deerpath lane Philadelphia, Pa 19154 | John Kradzinski | 4330 Deerpath Lane Phila, PA 19154 | Millbrookcivic@verizon.net | 2152819785 |
| MORRELL_PARK | West Torresdale/Morrell Park Civic Association | 3352 Kayford Circle, 19114 | Heather Stanton | 3352 Kayford Circle, 19114 | wtca19114@gmail.com | 2155149569 |
| MOUNT_AIRY_EAST | 22nd Ward Democratic Committee | P.O. Box 27211, Philadelphia, PA 19118 | Carla Cain | P.O. Box 27211, Philadelphia, PA 19118 | ccain2225@gmail.com | 2157584405 |
| MOUNT_AIRY_EAST | Cliveden Hills Association | P.O. Box 12317 Philadelphia, PA 19119 United States | Adrienne Glenn | 6342 Ardleigh Street, Philadelphia, PA 19138 | glenn6342@comcast.net | 2152246024 |
| MOUNT_AIRY_EAST | East Mt. Airy Neighbors | 7301 Germantown Ave., Phila PA 19119 | Natalia Serejko | 7301 Germantown Ave., Phila PA 19119 | info@eastmountairy.org | 2152424170 |
| MOUNT_AIRY_WEST | Blue Bell Hill Civic Association | 627 West Johnson Street Philadelphia, PA 19144 | Stanley Zawislak | 627 West Johnson ST, Phila, PA 19144 Philadelphia, PA 19144 | BLUEBELLHILLCIVICPHILA@GMAIL.COM | 2156034217 |
| MOUNT_AIRY_WEST | Mt. Airy Business Improvement District | P.O. Box 18879 Philadelphia Philadelphia, Pennsylvania 19119 | Janis Risch | PO Box 18879 Philadelphia, Pennsylvania 19119 | janis@mtairybid.com | 2158446492 |
| MOUNT_AIRY_WEST | West Mount Airy Neighbors, Inc. | 6703 Germantown Ave, Suite 200, 19119 | Ralph Pinkus | 6703 Germantown Ave. - Suite 200 Philadelphia, PA 19119 | rspinkus@gmail.com | 2155235320 |
| NEWBOLD | Newbold Civic Association | 1617 S. Iseminger Street Philadelphia, PA 19148 | Janette Spirk | 1617 S. Iseminger Street Philadelphia, PA 19148 | janette.spirk@gmail.com | 6107623183 |
| NICETOWN | 13th Republican Ward | 4503 N. Carlisle St. Philadelphia Philadelphia, PA 19140 | Carnel Harley | 4503 N. Carlisle Philadelphia, PA 19140 | Carnelharley35@gmail.com | 2672502509 |
| NICETOWN | 13th Democratic Ward | P.O Box 25563 3853 n. 19th st Phila, Pa 19140 | Charles Carn | 3853 N. 19th St. p.o. Box 25563 Phila, Pa. 19140 | charles.carn@dla.mil | 2672694608 |
| NORTH_CENTRAL | Friends of the 47th Ward | 1301 North Smedley Street, Philadelphia, PA 19121 | Louise Bundy | 1301 North Smedley Street, Philadelphia, PA 19121 | LouiseBundy1@comcast.net | 2159093157 |
| NORTH_CENTRAL | The Good News Community Organization | 1631 C.B. Moore Ave 19121 | Dorothy Kelly | 1631 C.B. Moore Ave 19121 | Louise159@verizon.net | 2673126508 |
| NORTH_CENTRAL | MAP Holistic CDC | 1510 W Stiles Street Philadelphia, PA 19121 | Lewis Nash | 1533 W Stiles Street Philadelphia, PA 19121 | map.nashsr@gmail.com | 2159836894 |
| NORTH_CENTRAL | St. Elizabeth’s RCO | 1845 N. 23rd Street | Priscilla Tee Bennett | 1845 N. 23rd Street | st.elizabethrco@gmail.com | 2672536178 |
| NORTH_CENTRAL | 32nd Democratic Ward | 2112 N Woodstock St, Philadelphia, PA 19121 | Judith Robinson | 2112 N Woodstock St | jjdthrbnsn@aol.com | 2152356517 |
| NORTH_CENTRAL | Beech Community Services Incorporated | 1510 Cecil B. Moore Avenue, Suite 100, Philadelphia PA 19121 | Christine Brown | 1510 Cecil B. Moore Avenue, Suite 100, Phila PA 19121 | cbrown@beechinterplex.com | 2157648824 |
| NORTHEAST_AIRPORT | Walton Park Civic Assn (WALPAC) | 111821 Brandon Road 19154 | Camille G. McColgan | 11821 Brandon Rd Philadelphia PA 19154 | camille.Mccolgan@gmail.com | 2156370728 |
| NORTHEAST_AIRPORT | Northeast Community Civic Alliance | 9605 Leon Street Philadelphia Philadelphia, PA 19114 | Thomas Neveil | 9605 Leon Street Philadelphia, PA 19114 | thomas.neveil@gmail.com | 2679758423 |
| NORTHEAST_AIRPORT | Normandy Civic Association | 2849 Narcissus Road, Phila., PA 19154 | Kristine Owens | 2835 Normandy Drive | normandycivic@gmail.com | 2158065469 |
| NORTHEAST_AIRPORT | 66th Republican Ward | 12751 Dunks Ferry Rd, Philadelphia, PA, 19154 | Bill Pirolli | 12751 Dunks Ferry Rd, Philadelphia, PA, 19154 | wpirolli@comcast.net | 2157386195 |
| NORTHERN_LIBERTIES | Northern Liberties Neighbors Association | 700 N. 3rd St. Philadelphia, Pa 19123 | Larry Freedman | 700 N. 3rd St., 1st Floor Philadelphia, PA 19123 United States | larryfreedman@comcast.net | 2159131939 |
| NORTHWOOD | Northwood Civic Association | 4706 Ramona Avenue Philadelphia Philadelphia, Pennsylvania 19124 | Joe Krause | 4706 Ramona Avenue, 19124 | josephkrause@comcast.net | 2674998408 |
| OGONTZ | Concerned Neighbors for Change | 2101 W. 65th Avenue | Marlene Archie | 2067 W 65th Avenue | marchie65@comcast.net | 2152245075 |
| OGONTZ | A Concerned Community Association (ACCA) | 5801 Ogontz Ave. Phila., PA 19141 | Sandra Broadus | 5801 Ogontz Ave Philadelphia, PA 19141 | accaphila@gmail.com | 2679786100 |
| OGONTZ | Belfield Area Neighbors Association (BANA) | Love Missionary Fellowship Baptist Church, 5801 Ogontz Avenue Philadelphia | Leni Johnson | 5723 N 21st Street Philadelphia, PA 19138 | banacivic@gmail.com | 2675776237 |
| OLD_CITY | Old City District | 231 Market Street, 19106 | Kate McGlinchey | 231 Market Street, Phila. PA 19106 | info@oldcitydistrict.org | 2155927929 |
| OLD_CITY | Center City Organized for Responsible Development | 55 N Broad St Philadelphia, PA 19107 | Kate Esposito | 55 N Broad St Philadelphia, PA 19107 | ccordrco1@gmail.com | 6092730170 |
| OLD_CITY | Franklin Bridge North Neighbors Inc | 411 Vine St, 19106 | Robert S Gurmankin | NA | rgurmankin@gmail.com | 2154959440 |
| OLD_CITY | 5th Ward Republican RCO | 1500 Walnut Street Suite 900, Philadelphia, PA 19102 | Mike Cibik | 1500 Walnut Street Suite 900 Phialdelphia, PA 19102 | macam@ccpclaw.com | 2157351060 |
| OLD_KENSINGTON | West Girard Progress | 719 W. Girard Avenue Philadelphia, PA 19123 | Barbara Pennock | 719 W. Girard Avenue Philadelphia, PA 19123 | bjchavous@gmail.com | 2157835671 |
| OLD_KENSINGTON | South Kensington Community Partners | 1301 North 2nd Street Philadelphia, PA 19122 | Ellie Matthews | 1301 N 2nd Street Philadelphia Pa 19122 | RCO@southkensingtoncommunity.org | 2154273463 |
| OLD_KENSINGTON | Olde Kensington Neighborhood Association | 420 W Thompson St, 19122 | Annie Moss | 420 W Thompson St, 19122 | okna420@comcast.net | 2674075950 |
| OLNEY | Greater Philadelphia Asian Social Service Center | 4943 N. 5th Street Philadelphia, PA 19120 | Mr. YoAn Kim | 4943 N. 5th St., Phila. PA 19120 | ykim@gpasspa.org | 2154561662 |
| OVERBROOK | Overbrook West Neighbors CDC | 6361 Lancaster Ave, 19151 Philadelphia, Pennsylvania 19151 | Gregory Allen | 6361 Lancaster Ave, 19151 | info@overbrookwestneighbors.com | 2156816937 |
| OVERBROOK | 34th Democratic Ward | 5536 Hunter Street, Philadelphia, PA 19131 | Kerry Wilson | 5536 Hunter Street, Philadelphia, PA 19131 | kwntcdc@aol.com | 2157782793 |
| OVERBROOK | 34th Ward Republican Committee | 7036 Woodbine Avenue Philadelphia, Pennsylvania 19151 | Paul P. Panepinto | 7036 Woodbine Avenue Philadelphia, PA 19151 | paulpanepinto625@gmail.com | 2156019289 |
| OVERBROOK | Neighbors of Overbrook Association (NOAH) | 1026 Edgemore Rd. Philadelphia, PA 19151 | Pauline Rosenberg | 1026 Edgemore Rd. Philadelphia, PA 19151 | NOAH19151@gmail.com | 2158791071 |
| OVERBROOK | Overbrook Park Civic Association | 1300 N 75th Street Rose Playground Philadelphia, PA 19151 | Marc Reason | 1605 Farrington Rd , 19151 | opca19151@gmail.com | 4842401528 |
| OVERBROOK | Overbrook Farms Club | 6376 City Ave Philadelphia, PA 19151 | Cynthia Cronin-Kardon | 6447 Overbrook Avenue Philadelphia, PA 19151 | croninkc@wharton.upenn.edu | 6105703190 |
| OXFORD_CIRCLE | Northeast Philadelphia Chinese Chamber of Commerce | 6401 Castor Ave, Philadelphia, PA 19149 | Clark Lambo | 6401 Castor Ave, Philadelphia, PA 19149 | clark.k.lambo@gmail.com | 6109995147 |
| OXFORD_CIRCLE | Community on the Rise | 6601 Rutland Street Philadelphia, PA 19149 | Sharyn Solomon | 6601 Rutland St | walace22@comcast.net | 2158139806 |
| OXFORD_CIRCLE | Take Back Your Neighborhood | 6727 Eastwood St Phila, PA 19149 | Robert Rudnitsky | 6727 Eastwood St Phila, PA 19149 | rrudnitsky@yahoo.com | 2154324875 |
| OXFORD_CIRCLE | 54th Republican Ward | 6923 Rutland Street Philadelphia Philadelphia, Pennsylvania 19149 | Fran Woodruff | 6923 Rutland Street Philadelphia, PA 19149 | fwoodshark@msn.com | 2157601306 |
| OXFORD_CIRCLE | 53rd Democratic Ward | 716 Glenview Street, 19111 | Janice Sulman | 716 GLENVIEW STREET PHILADELHIA, PA 19111 | jansulman@hotmail.com | 2159726000 |
| OXFORD_CIRCLE | Oxford Circle Civic Association | 1427 Higbee St, 19149 | Nancy Hampson | 1427 Higbee St, 19149 | NA | 2155378431 |
| OXFORD_CIRCLE | 53rd Republican Ward | 6908 OAKLEY ST PHILADELPHIA PHILADELPHIA, Pennsylvania 19111 United States | Gary Grisafi | 6908 Oakley St, Philadelphia, PA 19111 | garygtrg@aol.com | 2158208553 |
| PACKER_PARK | Friends of Penrose | 2541 South Broad Street, Philadelphia, PA 19148 | Vincent DeFino | 2541 South Broad Street, Philadelphia, PA 19148 | dvino2@aol.com | 2156515099 |
| PACKER_PARK | Friends of Historic FDR Park | 1500 Pattison Avenue Philadelphia, PA 19145 | Todd Pride | 1500 Pattison Avenue Philadelphia, PA 19145 | Todd@tlcforscc.org | 4847469881 |
| PARKWOOD_MANOR | Parkwood Area Civic Association | 3529 Vinton Rd., Philadelphia, PA 19154 | Mike Doyle | 12619 Dunks Ferry Rd. Philadelphia, PA 19154 | michaeldoylejr@comcast.net | 2672438599 |
| PASCHALL | Empowered Community Development Corporation | P.O. Box 23428 5803 Kingsessing Avenue Philadelphia, PA 19143 | Marsha Wall | 6011 Trinity Street Philadelphia, PA 19143 | Empoweredcdc.MWWALL@gmail.com | 2517292389 |
| PASSYUNK_SQUARE | Passyunk Square Civic Association | PO Box 18052, 19147 | Sarah Anton | PO Box 18052, 19147 | contact@passyunk.org | 2152665088 |
| PENNSPORT | 1st Ward Republicans | 1026 Greenwich Street, Philadelphia, PA 19147 | Billy Lanzilotti Jr. | 1026 Greenwich Street, Philadelphia, PA 19147 | billylanzilotti@yahoo.com | 2158064650 |
| PENNYPACK_PARK | 64th Republican Ward | 3029 Nesper St Philadelphia, Pennsylvania 19152 | Bob Cummings | 3029 nesper st 19152 | rhcummings@gmail.com | 2152758738 |
| PENNYPACK_PARK | 64th Democratic Ward | 7535 Battersby Street Philadelphia, PA 19152 | Peter McDermott | 7535 Battersby Street Philadelphia, PA 19152 | Zoning@64thWard.org | 2674546851 |
| PENROSE | Paschall Betterment League, Inc | 2210 S 71st St, 3rd Floor Philadelphia , PA 19142 | Gloria R Kellam | 7132 Greenway Ave Philadelphia , PA 19142 | greneekellam13@gmail.com | 2153136723 |
| POINT_BREEZE | South Philadelphia H.O.M.E.S., Inc | 1444 Point Breeze Avenue, 19146 | Claudia Sherrod | 1444 Point Breeze Avenue, 19145 | clsherrod@sphinc.com | 2153344430 |
| POINT_BREEZE | Point Breeze Community Development Coalition | 1701 S. 18th Street Philadelphia, PA 19146 | Albert Littlepage | 1801 S. 18th Street Philadelphia, PA 19146 | pbcdczoning@gmail.com | 2672401855 |
| POINT_BREEZE | Point Breeze Civic Association | 1518 South 22nd Street, 19146 | Ronald Smith | 1518 South 22nd Street, 19146 | pbca15182003@yahoo.com | 2158163333 |
| POINT_BREEZE | Concerned Citizens of Point Breeze | Concerned Citizens of Point Breeze 2122 Wharton Street Philadelphia, Pa 19146 | Theressa McCormick | 2122 Wharton Street Philadelphia, Pa 19146 | ccpbzoning@gmail.com | 2154904827 |
| POINT_BREEZE | East Point Breeze Neighbors | PO Box 54891 Philadelphia, PA 19148 | Miguel Garces | 1617 Manton Street Philadelphia, Pennsylvania 19146 | zoning@epbneighbors.org | 6095567852 |
| QUEEN_VILLAGE | South Street Headhouse District | PO Box 63675, Headhouse Shambles, 2nd and Pine Street, 19147 | Michael Harris | PO Box 63675, 19147 | mikeharris@southstreet.com | 2154133713 |
| QUEEN_VILLAGE | Queen Village Neighbors Association | 417 South Street c/o Joynture. Office 23 Philadelphia, PA 19147 | Lucy Erdelac | P. O. Box 63763 Philadelphia, PA 10147 | info@qvna.org | 2153390975 |
| RHAWNHURST | Rhawnhurst Civic Association | 7702 Loretto Ave Philadelphia, PA 19111 | Ken Kline | 7702 Loretto Ave Philadelphia, PA 19111 | Rhawnhurstcivic@aol.com | 2157453311 |
| RICHMOND | 45th Democratic Ward | 2824 Plum Street Philadelphia, PA 19137 | Harry Enggasser | 2824 Plum Street Philadelphia, PA 19137 | henggasser@yahoo.com | 2672533189 |
| RICHMOND | South Port Richmond Civic Association | 2974 Almond Street Philadelphia, PA 19134 United States | John Kalicki | PO Box 29362, Philadelphia, PA 19125 Philadelphia, PA 19134 United States | zoning@sopocivic.org | 4845337157 |
| RICHMOND | Somerset Neighbors for Better Living | 2771 Ruth Street, Philadelphia, PA 19134 | Nicholas Fury | 2815 Ruth Street, Philadelphia, PA 19134 | snblzoning@gmail.com | 2156680057 |
| RICHMOND | Port Richmond On Patrol & Civic Association (PROPAC) | PROPAC 3625 Gaul Street Philadelphia, PA 19134 United States | Ken Paul | 3615 Miller St, 19134 | propac19134@gmail.com | 2153809783 |
| RITTENHOUSE | Center City Residents Association (CCRA) | 1608 WALNUT ST 12th Fl PHILADELPHIA, PA - Pennsylvania 19103 | Travis Oliver | 1608 Walnut St, 12th Fl, 19103 | centercityresidents@centercityresidents.org | 2155466719 |
| RITTENHOUSE | Fitler Square Neighborhood Association | 1500 Market St. Suite 3500E Philadelphia, PA 19102 | Matthew Whitehorn | 1500 Market St Suite 3500E Philadelphia, PA 19102 | vp@fitlersquareneighbors.org | 2155757000 |
| RITTENHOUSE | South Street West Improvement District, Inc | 1511 South Street Philadelphia , pa 19146 | Marcus Ferreira | 1620 South Street Unit B Philadelphia , PA 19146 | excomm-sswba@googlegroups.com | 2679396272 |
| RIVERFRONT | Pennsport Civic Association | 1837 South Second Street, 19148 | Patrick Fitzmaurice | 108 McKean Street Philadelphia, PA 19148 | patrickjfitzmauriceii@gmail.com | 2156688893 |
| RIVERFRONT | Whitman Council Incorporated | 2455 S. 3rd Street Philadelphia, Pennsylvania 19148 | Mark Kapczynski | 2455 S Third Street, Philadelphia PA 19148 | whitmancouncilinc@gmail.com | 2154684056 |
| ROXBOROUGH | Central Roxborough Civic Association (CRCA) | PO Box 25859, 19128 | Celeste Hardester | 368 Green Lane Philadelphia, PA 19128 | centralroxrco@crca.us | 2155181799 |
| ROXBOROUGH | Wissahickon Neighbors Civic Association (WNCA) | 100 DAWSON ST PHILADELPHIA PHILADELPHIA, PA 19127 | Joseph A Bergan | 3803 Cresson St., 19127 | jbergan101@gmail.com | 6103066917 |
| ROXBOROUGH | Roxborough Development Corporation | 6120 Ridge Avenue Philadelphia, PA 19128 | James Calamia | 6120 Ridge Avenue Philadelphia, PA 19128 | james@roxboroughpa.com | 2155082358 |
| SOCIETY_HILL | Society Hill Civic Association | SHCA P.O. Box 63503 Phila, PA 19147 | Paul Boni | 325 Chestnut Street, Ste 1109 | ZHPcommittee@societyhillcivic.org | 2159890034 |
| SOMERTON | Somerton Civic Association | 13015 Proctor Road Philadelphia, PA 19116 | Chris Bordelon | 13015 Proctor Road Philadelphia, PA 19116 | czblawoffice@gmail.com | 2679399857 |
| SPRING_GARDEN | Spring Garden Civic Association | 601 N. 17th St. 1st Floor Phila., PA 19130 | Patricia Freeland | 601 N. 17th St. 1st Floor Storefront Phila., PA 19130 | pfreeland2@aol.com | 2158020334 |
| SPRUCE_HILL | Spruce Hill Community Association | 257 S 45th St, 19104 | Barry Grossbach | 257 S 45th St, 19104 | b.grossbach@gmail.com | 2153820365 |
| SPRUCE_HILL | West Philly United Neighbors | 10 S 43rd Street, Philadelphia, PA 19104 | Ang Sun, Ph.D. | 10 S 43rd St, Philadelphia, PA 19104 | woshiang@gmail.com | 2678086280 |
| SPRUCE_HILL | West Philadelphia Neighbors for Progressive Planning and Preservation | 4533 Pine Street, 19143 | Mary McGettigan | 4533 Pine Street, 19143 | westphillyplanpreserve@gmail.com | 2154729042 |
| SPRUCE_HILL | Baltimore Avenue Business Association | 4740 Baltimore Avenue, Phila PA 19143 | Katherine Dowdell | 4740 Baltimore Avenue Philadelphia, PA 19143 United States | kdowdell@farragutstreet.com | 2158050370 |
| SPRUCE_HILL | Friends of Clark Park | P.O. Box 31908 Philadelphia, PA 19104 | Lisa McDonald Hanes | 633 S 42nd St Philadelphia, PA 19104 | president@friendsofclarkpark.org | 2152052945 |
| STADIUM_DISTRICT | Stadium Community Council | 3124 SOUTH 13TH STREET PHILA, PA 19148 | Ivan Cohen | 3100 S 13th St. | ivanc100@comcast.net | 2677605023 |
| STADIUM_DISTRICT | Bigler Civic Association | 2843 South Adler St., Philadelphia, PA 19148 | Rosemary Morrison | 2843 South Adler St., Philadelphia, PA 19148 | marcamp2@comcast.net | 2672052091 |
| STADIUM_DISTRICT | Veterans Stadium Neighbors Civic Association | P.O. Box 54599, Philadelphia, PA 19148 | Antonio Parretta | 3117 S. 13th Street, Philadelphia, PA 19148 | aparretta@yahoo.com | 2153844363 |
| STADIUM_DISTRICT | South Philadelphia Communities Civic Association (SPCCA) | 1100 Bigler Street, 2nd Floor, Philadelphia, PA 19148 | Rich Cedrone | 2736 S Iseminger Street, Philadelphia PA, 19148 | rckcscic@verizon.net | 6107210006 |
| STANTON | Uptown Entertainment and Development Corporation | 2227 N. Broad St. 2nd Floor Philadelphia, PA 19132-4502 | Linda Richardson | 2227 N. Broad Street Suite 2F Philadelphia, PA 19132 | lrichardson.uptown@gmail.com | 2152361878 |
| STANTON | Heritage Homeowners Association | 1933 N. 23rd Street Philadelphia Philadelphia, Pennsylvania 19121/2024 | Gracie Barcliff | 1747 N 25th St | HeritageHomeownersAsso@gmail.com | 2157695899 |
| STANTON | 16th Republican Ward | 2321 N Carlisle Street, Philadelphia, PA 19132 | Tyler Ray | 2321 N Carlisle Street, Philadelphia, PA 19132 | 16thwardgop@gmail.com | 2156507048 |
| STANTON | North Central Philadelphia Susquehanna Community Development Corporation | 1631 W. Susquehanna Avenue Philadelphia, Pennsylvania 19121 | Tinamarie Russell |
1631 W. Susquehanna Avenue Philadelphia, Pennsylvania 19121 United States |
info@ncpcdc.org | 2159801151 |
| STRAWBERRY_MANSION | North Penn Community Action Council | 2423 N 27th Street | Henry Davis | 2414 N. 27th Street,3rd Floor | hdavis0302@gmail.com | 2154372313 |
| STRAWBERRY_MANSION | Summerville RCO | 2148 N. 30th Street Philadelphia, PA 19121 | Tierra Younger | 2148 N. 30th Street Philadelphia, PA 19121 | visionarydreamspbc@gmail.com | 2154391858 |
| STRAWBERRY_MANSION | Strawberry Mansion Community Concern | 2640 N. Myrtlewood Street Philadelphia, PA 19132 | Bonita Cummings | 2640 Myrtlewood Street Philadelphia, PA 19132 | SHL851@aol.com | 2678479383 |
| STRAWBERRY_MANSION | Strawberry Mansion Community Development Corporation | 2829 West Diamond Street Philadelphia, PA 19121 | Tonnetta Graham | 2829 West Diamond Street Philadelphia, PA 19121 | tonnetta@strawberrymansioncdc.org | 2674397665 |
| STRAWBERRY_MANSION | 28th Democratic Ward | 2521 N. 30th Street Philadelphia, PA 19132 | Lester Emerson | 2521 N 30th Street Philadelphia, PA 19132 | ward28th@aol.com | 2672287520 |
| STRAWBERRY_MANSION | All In The Family Group Associates Incorporated | 2402 n 26TH STREET PHILA, PA 19132 | Odessa Tate | 2402 N. 26th Street Phila, Pa 19132 | allinthefamilygroupinc@gmail.com | 2154352581 |
| TACONY | Tacony Civic Association | P.O. Box 8979, 19135 | Louis Iatarola | 4600 Tyson Ave Philadelphia, Pa 19135 | lmioftacony@comcast.net | 2154326520 |
| TACONY | North East Quality of Life Coalition | 6628 Tulip St phila, pa 19135 | Barbara Rup | 6628 Tulip St, 19135 | NEQOLCoalition@hotmail.com | 2675326341 |
| TIOGA | Tioga United, Inc. | 1539 W. Venango Street Philadelphia, PA 19140 | Veronica Holman | 1934 W. Venango Street, 19140 | tiogaunited@hotmail.com | 2152526845 |
| TIOGA | Upper North Neighbors Association | 2823 N. Croskey Street, Philadelphia, PA 19132 | Dwayne Lilley | 2834 N. Croskey Street, Philadelphia, PA 19132 | dwlilley980@gmail.com | 2674323665 |
| TORRESDALE | East Torresdale Civic Association | P.O. Box 65412, Philadelphia, PA 19155 | Joseph Carson | 9211 Melrose Street, 19114-4217 | etcaonline@gmail.com | (215)332-0914 |
| TORRESDALE | Upper Holmesburg Civic Association | 4415 Millett St. Philadelphia, Pennsylvania 19136 | Stanley Cywinski | 4415 Millett St, 19136 | scywin@rcn.com | 2159908128 |
| UNIVERSITY_CITY | Powelton Village Civic Association | P.O. Box 7616 Philadelphia, PA 19101 United States | John Phillips | P.O. Box 7616 Philadelphia, PA 19101 United States | president@poweltonvillage.org | 2153874223 |
| UNIVERSITY_CITY | 27th Republican Ward | 4256 Regent Square, 19104 | Timothy Reimer | 648 South 51st St., Philadelphia, PA 19143 | Timothy_Reimer@hotmail.com | 2154703896 |
| UNIVERSITY_CITY | Drexel Area Property Association | 3070 Spring Garden Street, Philadelphia, Pennsylvania | Gary Jonas | 1145 Forrest Street, Conshohocken, PA, 19428 | dapaboard@gmail.com | 2156693412 |
| UPPER_KENSINGTON | Kensington Neighborhood Association | 2910 Hartville Street | Eduardo Esquivel | 2910 Hartville Street | eduardog.esquivel@gmail.com | 3147917889 |
| UPPER_KENSINGTON | HACE CDC | 167 W. Allegheny Avenue Suite 200 Philadelphia, PA 19140 | Stasia Monteiro | 167 W. Allegheny Avenue Suite 200 Philadelphia, PA 19140 | smonteiro@hacecdc.org | 2679020764 |
| UPPER_KENSINGTON | 7th Ward Civic Association | 133 E Westmoreland St Philadelphia, PA 19134 | Joseph Evangelista | 133 E Westmoreland St Philadelphia, PA 19134 | ward7civic@yahoo.com | 2153601524 |
| UPPER_ROXBOROUGH | Residents of Shawmont Valley Association | 399 Port Royal Avenue, 19128 | Jamie Wyper | 399 Port Royal Ave | jw3@jacobswyper.com | 2154601949 |
| UPPER_ROXBOROUGH | Upper Roxborough Civic Association | 635 Summit Ave. Philadelphia, PA 19128 | Rich Giordano | 635 Summit Ave. Philadelphia, PA 19128 | rgiordano1@comcast.net | 2158806454 |
| WALNUT_HILL | West Philadelphia Economic Development Council | 255 S. 58th Street Philadelphia, PA 19139 | Kyle Sampson | 255 South 58th Street Philadelphia, PA 19139 | publicpolicy@gmx.com | 2155012596 |
| WALNUT_HILL | Walnut Hill Community Association | The Enterprise Center, Community Development Corporation Suite 1, 4548 Market Street Philadelphia , PA 19139 | Dave Brindley | NA | dave.brindley@cru.org | 2154077182 |
| WASHINGTON_SQUARE | Washington Square West Civic Association | 214 South 11th Street, 19107 | Jonathan Broh | 214 South 11th Street Philadelphia, PA 19107 | zoning@washwestcivic.org | 2153809003 |
| WEST_KENSINGTON | Norris Square Community Alliance | 174 Diamond Street Philadelphia, PA 19122 | Zasha Morales | 174 Diamond Street Philadelphia, PA 19122 | zmorales@nscaphila.org | 2154268734 |
| WEST_KENSINGTON | Zulu Nation RCO | 2045 N Lawrence Street Philadelphia, PA 19133 | James “Bo” McCain | 2355 N Fawn St Philadelphia, PA 19133 | zulunationcdc@gmail.com | 2155205686 |
| WEST_OAK_LANE | 10th Democratic Ward | P.O. Box 683 Philadelphia | Isabella Fitzgerald | 1961 Penfield Street | izzyworks925@gmail.com | 2154298051 |
| WEST_PARK | 52nd Democratic Ward | 2439 Golf Road | Steve Jones | 2439 golf road Phila, Pa 19131 | sjones@elliottlewis.com | 2156685401 |
| WEST_PARK | 52nd Republican Ward | 2438 N 54th Street 2438 N 52nd Street, 19131 | Lamont Foreman | 2438 N 54th Street, 19131 | l4man@comcast.net | 2159176888 |
| WEST_PASSYUNK | West Passyunk Neighbors Association (WPNA) | PO Box 60505, 19145 Philadelphia, PA 19145 | Elizabeth Crutchley | 2232 S Lambert St Philadelphia, PA 19145 | president@westpassyunk.org | 2158398826 |
| WEST_POPLAR | 14th Ward Democratic Executive Committee | 1117 Mt. Vernon Street Philadelphia, PA 19123 | Diane Monroe | 1117 Mt. Vernon Street Philadelphia, Pennsylvania 19123 | Diana.Davis@comcast.net | 2156055618 |
| WEST_POPLAR | Richard Allen New Generation | 1907 Ingersoll Street, Philadelphia, PA 19121 | Bernard Gorham | 6516 N. Camac Street, Philadelphia, PA 19126 | diggstonya@gmail.com | 2153172741 |
| WEST_POWELTON | West Powelton Saunders Park RCO | 4209 Filbert St | Pam Andrews | 4209 Filbert St | andrewsp0719@gmail.com | 6103489940 |
| WINCHESTER_PARK | Holme Circle Civic Association | PO Box 14311 Philadelphia, PA 19115 | Mike Fagan | 3034 Fairfield Street, 19136 | mfaganholmecirclecivic@gmail.com | 2672296004 |
| WINCHESTER_PARK | Winchester Park Civic Association | 8115 Martindale Street Philadelphia, Pa 19136 | Mary Ann Cicalese-Kiker | 8115 Martindale Street Philadelphia, Pa 19136 | winparkmck@aim.com | 2155146059 |
| WISSAHICKON | Wissahickon Interested Citizens Association | 124 Sumac St, Philadelphia, PA 19128 | Nicole Healy | 124 Sumac St, Philadelphia, PA 19128 | president@wissahickon.us | 2152929558 |
| WISSINOMING | Wissinoming Civic Association | 6126 Torresdale Ave Philadelphia, Pa 19135 | John Barnes | 6126 Torresdale Ave, Philadelphia, PA, 19135 | johnbz@comcast.net | 2676209123 |
| WISTER | Baynton Hill Neighbors | 51 East Penn St. Philadelphia, PA 19144 | Joe McCarthy | 51 East Penn St. Philadelphia, PA 19144 | jfmccarthy3rdarchitecture@gmail.com | 2158448118 |
| WISTER | 12th Ward Democratic Committee | 5051 North Portico Street, Philadelphia, PA 19144 | Theodore Stones | 5051 North Portico Street, Philadelphia, PA 19144 | tedstones333@gmail.com | 2158696954 |
| WISTER | Wakefield 49ers Community Development and Improvement Association | PO Box 25607, Phila PA 19144 | Rosalind McKelvey | PO Box 25607, Phila PA 19144 | roz.mckelvey@gmail.com | 2152756853 |
| WOODLAND_TERRACE | Woodland Terrace HomeOwners Association | 516 Woodland Terrace Philadelphia Philadelphia, Pennsylvania 19104 | Katharine Beals | 516 Woodland Terrace Philadelphia, Pennsylvania 19104 | katie.beals@comcast.net | 2152220954 |
| WYNNEFIELD | City Avenue Special Services District of Philadelphia and Lower Merion | 1 Belmont Avenue Suite 425 Bala Cynwyd, PA 19004 | Terrence Foley | 1 Belmont Avenue Suite 425 Bala Cynwyd, PA 19004 | tfoley@cityave.org | 6107470311 |
| WYNNEFIELD | Wynnefield Residents Association | 5301 Overbrook Avenue Philadelphia, PA 19131 | Michael Reid | 2341 N. 52nd Street | mreid52@comcast.net | 2157718089 |
| WYNNEFIELD_HEIGHTS | Wynnefield Heights Civic Association | P.O. Box#2874 Bala Cynwd, PA 19004 | Monica Hawkins | 2722 West Country Club Road Philadelphia, PA 19131 | Monica.a.hawkins@hud.gov | 2672522367 |
| YORKTOWN | Yorktown 2035 | 1323 Betsy Ross Place, Phila, PA 19122 | Jacob Peck | 1818 Master St. | jacobphl@icloud.com | 2673341996 |
| YORKTOWN | Yorktown Community Development Corporation | 1300 W. Jefferson Street, Office Suite Philadelphia, PA 19122 | Rochelle Johnson | 1202 W. Oxford St. | rochellej926@gmail.com | 2154323558 |
| NA | Central Delaware Advocacy Group (CDAG) | PO Box 63682, Philadelphia, PA 19147 | Matt Ruben | 1000 N. Orianna St.,Philadelphia, PA 19123 | mruben@gmail.com | 2679777257 |
Returning to our original use case, this analysis and model has successfully laid the foundation for achieving our vision of a Displacemnet Risk Tracking tool to be used by city governments.
1 Anticipating neighborhoods where home values may increase
Achieved: This model accurately predicts the risk of new construction across the city, and has identified neighborhoods at risk of experiencing displacement. Our exploratory analysis has also indicated areas with large recent changes in home values. Next steps: We would like to incorporate the recent change in home value into our Risk Map at the neighborhood level.
2 Identifying trusted community partners in each area of the city
Achieved: A list of RCOs is joined into our neighborhood list. Next Steps: We would like to create an interactive risk map that displays these partners upon clicking on a neighborhood on the map.
3 By estimating the benefit various policy levers, such as flip taxes or home renovation subsidies, can have on the long-time residents of each neighborhood.
Achieved: We have indicated the changes in home value that have been recently occurring. Next Steps: Ideally, we can quantify the effects of various policy levers. From there, we would automate a cost and benefit calculation using the quantified policy outcomes and home values.
We hope that other actors who are similarly concerned with homeowner displacement can continue to build upon both this model and dashboard tool. This kind of tool would be incredibly helpful to planners and policy makers attempting to stem what feels like an inevitable increase in displacement of long time residents in growing cities. Not only is this displacement not a given, but we currently have all the information needed to tackle the issue in a precise and data-driven way.
Pew Charitable Trusts. 2016. Philadelphia’s Changing Neighborhoods: Gentrificaiton and other shifts since 2000. https://www.pewtrusts.org/~/media/assets/2016/05/philadelphias_changing_neighborhoods.pdf↩︎